ইলুমে স্পার্ক নির্ভরতা পরিচালনা করা
ইলুম নির্ভরতা পরিচালনা করার জন্য তিনটি পদ্ধতি সরবরাহ করে, প্রতিটি বিভিন্ন ব্যবহারের ক্ষেত্রে উপযুক্ত।
1. ডেডিকেটেড ডকার ইমেজ (উত্পাদনের জন্য প্রস্তাবিত)
এই পদ্ধতিতে একটি কাস্টম ডকার চিত্র তৈরি করা জড়িত যা সমস্ত প্রয়োজনীয় নির্ভরতা অন্তর্ভুক্ত করে। এটি পরিবেশ জুড়ে ধারাবাহিকতা নিশ্চিত করে এবং উত্পাদন কাজের চাপের জন্য সর্বোত্তম পদ্ধতি।
একটি কাস্টম স্পার্ক চিত্র তৈরি করার পদক্ষেপ
- অফিসিয়াল ইলাম স্পার্ক বেস চিত্র দিয়ে শুরু করুন।
- যে কোনও জাভা-ভিত্তিক নির্ভরতার জন্য প্রয়োজনীয় জার যুক্ত করুন।
- প্রয়োজনীয় পাইথন প্যাকেজ ইনস্টল করুন।
- চিত্রটি একটি ব্যক্তিগত বা পাবলিক রেজিস্ট্রিতে তৈরি করুন এবং ধাক্কা দিন।
- এই নতুন চিত্রটি ব্যবহার করতে ইলাম কনফিগার করুন।
উদাহরণ: অ্যাপাচি আইসবার্গ সমর্থন যুক্ত করা
নীচে একটি উদাহরণ ডকারফাইল যা ইলাম স্পার্ক বেস চিত্রের উপর ভিত্তি করে তৈরি করে এবং অ্যাপাচি আইসবার্গের জন্য সমর্থন যুক্ত করে:
থেকে ilum/spark:3.5.3
ব্যবহারকারী root
# আইসবার্গ সাপোর্টের জন্য জার যুক্ত করুন
যুক্ত https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.8.0/iceberg-spark-runtime-3.5_2.12-1.8.0.jar $SPARK_HOME/jars
# পাইথন ডিপেন্ডেন্সি ইন্সটল করুন
RUN python3 -m pip install pandas pyiceberg[hive,s3fs,pandas,snappy,gcsfs,adlfs]
ব্যবহারকারী ${spark_uid}
চিত্রটি তৈরি করুন এবং ধাক্কা দিন
ডকারফাইল লেখার পরে (উদাহরণস্বরূপ, হিসাবে সংরক্ষণ করা হয়েছে ডকারফাইল বর্তমান ডিরেক্টরিতে), চিত্রটি তৈরি করুন এবং ধাক্কা দিন:
ডকার বিল্ড -টি মাইপ্রাইভেটরেপো / স্পার্ক: 3.5.3-আইসবার্গ।
ডকার পুশ মাইপ্রাইভেটরেপো / স্পার্ক: 3.5.3-আইসবার্গ
কাস্টম চিত্রটি ব্যবহার করতে ইলাম কনফিগার করা হচ্ছে
চিত্রটি ধারক রেজিস্ট্রিতে উপলব্ধ হয়ে গেলে, এই কাস্টম স্পার্ক চিত্রটি ব্যবহার করতে ইলুম আপডেট করুন:
-
ক্লাস্টার সেটিংস সম্পাদনা করুন: ইউআইতে স্পার্ক সংস্করণ সেট করো

অথবা এখানে

-
ডিফল্ট ক্লাস্টার সেট আপ করা :
ক) ইনস্টলেশন প্রক্রিয়া চলাকালীন: আপনার হেলমে এই পতাকাটি যুক্ত করুন ইনস্টল কমান্ড:- - সেট ইলুম - core.kubernetes.defaultCluster.config.spark\\.kubernetes\\.container\\.image="myPrivateRepo/spark : 3.5.3 - হিমশৈল"খ) আগে থেকে ইনস্টল করা দৃষ্টান্তে: ইউআই পরিষেবাতে ক্লাস্টার কনফিগারেশনে ডিফল্ট স্পার্ক চিত্র সেট করুন:
spark.kubernetes.container.image : মাইপ্রাইভেটরেপো/স্পার্ক : 3.5.3 - হিমশৈল -
প্রতি-কাজের সেটিং: একটি স্পার্ক কাজ জমা দেওয়ার সময়, এই প্যারামটি সেট করে চিত্রটি নির্দিষ্ট করুন:
spark.kubernetes.container.image : মাইপ্রাইভেটরেপো/স্পার্ক : 3.5.3 - হিমশৈল
সর্বোত্তম অনুশীলন
- সমস্ত নির্ভরতা সংস্করণগুলি ব্যবহৃত স্পার্ক সংস্করণের সাথে সারিবদ্ধ রাখুন।
- সুরক্ষা প্যাচগুলি এবং সর্বশেষতম নির্ভরতা সংস্করণগুলি অন্তর্ভুক্ত করতে নিয়মিত কাস্টম চিত্রটি আপডেট করুন।
- একটি নির্ভরযোগ্য এবং অ্যাক্সেসযোগ্য ধারক রেজিস্ট্রিতে চিত্রগুলি সঞ্চয় করুন।
- আপনার চিত্রগুলির জন্য একটি সংস্করণ স্কিম ব্যবহার করুন (উদাঃ, ট্যাগে স্পার্ক এবং বৈশিষ্ট্য সংস্করণগুলি অন্তর্ভুক্ত করুন)।
সমস্যা সমাধান
| সমস্যা | সমাধান |
|---|---|
| নির্ভরশীলতার অমিল | নিশ্চিত করুন যে সমস্ত JAR এবং পাইথন প্যাকেজগুলি ব্যবহারে থাকা স্পার্ক সংস্করণের সাথে সামঞ্জস্যপূর্ণ। |
| চিত্র খুঁজে পাওয়া যায়নি | চিত্রের নামটি যাচাই করুন এবং এটি সঠিক রেজিস্ট্রিতে ধাক্কা দেওয়া হয়েছিল (এবং ইলুমের সেই রেজিস্ট্রিতে অ্যাক্সেস রয়েছে)। |
| নির্ভরশীলতা না থাকায় চাকরি ব্যর্থ হয় | স্পার্ক কাজটি উদ্দিষ্ট কাস্টম চিত্রটি ব্যবহার করছে কিনা তা ডাবল-চেক করুন (ইলাম বা স্পার্ক-সাবমিট কমান্ডে চিত্রের কনফিগারেশনটি পরীক্ষা করুন)। |
2. ব্যবহার করে স্পার্ক.জারস.প্যাকেজস এবং পাই (টেস্টিং এবং পিওসির জন্য ভাল)
For rapid development and testing, you can add dependencies dynamically using Spark’s configuration. This approach fetches JARs and installs Python packages at startup time.
জাভা জার যুক্ত করা হচ্ছে
জাভা নির্ভরতা ব্যবহার করে মাভেন স্থানাঙ্ক নির্দিষ্ট করুন স্পার্ক.জারস.প্যাকেজস কনফিগারেশন। উদাহরণস্বরূপ, অ্যাপাচি আইসবার্গ জার অন্তর্ভুক্ত করতে:
ক) ইনস্টলেশন প্রক্রিয়া চলাকালীন: আপনার হেলমে এই পতাকাটি যুক্ত করুন ইনস্টল কমান্ড:
- - সেট ইলুম - core.kubernetes.defaultCluster.config.spark\\.jars\\.packages="org.apache.iceberg : হিমশৈল - স্ফুলিঙ্গ - রান - 3.5_2.12 : 1.8.0"
খ) রানটাইমে: জারগুলিতে সেট করুন ক্লাস্টার কনফিগারেশন বা চাকরি/চাকরি সৃষ্টির সময় UI পরিষেবাতে কনফিগারেশন/প্যারামিটারের অধীনে।
স্পার্ক.জারস.প্যাকেজস : অর্গ.অ্যাপাচি.আইসবার্গ : হিমশৈল - স্ফুলিঙ্গ - রান - 3.5_2.12 : 1.8.0
কাজ শুরু হলে স্পার্ক স্বয়ংক্রিয়ভাবে মাভেন সেন্ট্রাল বা কনফিগার করা সংগ্রহস্থল থেকে নির্দিষ্ট প্যাকেজ (এবং এর নির্ভরতা) ডাউনলোড করবে।
ইলামে পাইথন নির্ভরতা ইনস্টল করা
ইলাম স্পার্ক কাজ এবং জুপিটার সেশনের জন্য পাইথন নির্ভরতা ইনস্টল করার একাধিক উপায় সরবরাহ করে। আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে আপনি এর মধ্যে চয়ন করতে পারেন:
- স্পার্ক জবসের জন্য ইলম ইউআই ব্যবহার করা
- সংজ্ঞা নির্ধারণ করা হচ্ছে
pyRequirementsজুপিটার সেশনে - হেলম কনফিগারেশনের মাধ্যমে ডিফল্ট পাইথন প্যাকেজগুলি সেট করা হচ্ছে
1. Ilum UI এর মাধ্যমে পাইথন প্যাকেজ ইনস্টল করা
ইউআই থেকে সরাসরি স্পার্ক জব তৈরি করার সময় ইলাম পাইথন নির্ভরতা যুক্ত করা সহজ করে তোলে।

- নেভিগেট করুন কাজ যোগ করুন + ইলাম ইউআই বিভাগ।
- সনাক্ত করুন প্রয়োজনীয়তা মাঠের নিচে
সংস্থানট্যাব। - প্রয়োজনীয় পাইথন নির্ভরতা লিখুন।
- ইলাম স্পার্কের কাজটি কার্যকর করার আগে রানটাইমে এই নির্ভরতাগুলি ইনস্টল করবে।
2. জুপিটার সেশনে পাইথন নির্ভরতা সেট করা ( pyRequirements )
জুপিটার ব্যবহারকারীদের জন্য, ইলাম একটি সেশন শুরু করার সময় প্রয়োজনীয় প্যাকেজগুলি নির্দিষ্ট করার একটি উপায় সরবরাহ করে:

- এতে জুপিটার নোটবুক সেশন তৈরি ফর্ম (%manage_spark), অবস্থান নির্ণয় করুন pyRequirements ক্ষেত্র।
- প্যাকেজগুলি একটি হিসাবে প্রবেশ করান সেমিকোলন-বিভক্ত তালিকা:
পান্ডা; অসাড়; ওপেনএআই - জুপিটার সেশন শুরু হলে, ইলাম স্বয়ংক্রিয়ভাবে এই নির্ভরতাগুলি ইনস্টল করবে।
সংস্করণ 6.3.1 থেকে অতিরিক্ত পাইথন লাইব্রেরির জন্য একটি বিশেষ বিভাগ রয়েছে।

3. হেলমের মাধ্যমে ডিফল্ট পাইথন প্যাকেজগুলি কনফিগার করা (স্থায়ী সেটিংসের জন্য)
সমস্ত জুপিটার স্পার্ক সেশনের জন্য ডিফল্ট প্যাকেজগুলি সংজ্ঞায়িত করতে, আপনি এটি করতে পারেন:
ক) ইনস্টলেশন প্রক্রিয়া চলাকালীন: আপনার হেলমে এই পতাকাটি যুক্ত করুন ইনস্টল কমান্ড:
- - সেট ইলুম - jupyter.sparkmagic.config.sessionConfigs.conf=' { "পাই প্রয়োজনীয়তা" : "পান্ডা; অসাড়; ওপেনএআই" } '
খ) ইনস্টলেশন প্রক্রিয়া পরে: সংশোধন করুন ilum-jupyter-config প্রয়োজনীয় প্যাকেজগুলি অন্তর্ভুক্ত করতে মানচিত্র কনফিগার করুন:
ডাটা :
config.json : |
...
{
"session_configs": {
"কনফ": { "পাই প্রয়োজনীয়তা": "পান্ডাস; অসাড়; openai", "cluster": "default", "autoPause": "false", "spark.example.config": "আপনি ilum-jupyter-config K8s configmap এ ডিফল্ট কনফিগারেশন পরিবর্তন করতে পারেন" },
"ড্রাইভারমেমরি": "1000M",
"এক্সিকিউটর কোর": 2
}
}
এই কনফিগারেশনটি প্রয়োগ করার পরে, প্রতিটি জুপিটার সেশন চালু হবে স্বয়ংক্রিয়ভাবে ম্যানুয়াল ইনস্টলেশনের প্রয়োজন ছাড়াই এই নির্ভরতাগুলি অন্তর্ভুক্ত করুন।
প্রতিটি পদ্ধতির আপনার স্পার্ক কাজ এবং জুপিটার সেশনগুলি প্রয়োজনীয় নির্ভরতা ইনস্টল করা আছে তা নিশ্চিত করে, যাতে আপনি করতে পারেন পরিবেশ পরিচালনার পরিবর্তে ডেটা ইঞ্জিনিয়ারিং এবং বিশ্লেষণে মনোনিবেশ করুন। 🚀
সর্বোত্তম অনুশীলন
- এর জন্য এই পদ্ধতিটি ব্যবহার করুন টেস্টিং বা প্রুফ-অফ-কনসেপ্ট কাজ; প্রতিটি রানের উপর নির্ভরতা ডাউনলোডের ওভারহেডের কারণে উত্পাদনের জন্য এটি এড়িয়ে চলুন।
- পুনরুত্পাদনযোগ্যতা নিশ্চিত করতে সর্বদা প্যাকেজগুলির জন্য সঠিক সংস্করণগুলি নির্দিষ্ট করুন।
- আরও ভাল ধারাবাহিকতার জন্য কাস্টম ডকার চিত্রগুলির সাথে এই পদ্ধতির একত্রিত করুন (উদাঃ, মূল নির্ভরতার জন্য ডকার ব্যবহার করুন এবং
স্পার্ক.জারস.প্যাকেজসপ্রয়োজনে কয়েকটি ক্ষণস্থায়ী জন্য)। - নেটওয়ার্ক অ্যাক্সেস এবং পারফরম্যান্স সম্পর্কে সচেতন হন, কারণ প্যাকেজগুলি ডাউনলোড করা স্টার্টআপের সময়কে ধীর করতে পারে।
সমস্যা সমাধান
| সমস্যা | সমাধান |
|---|---|
| JAR খুঁজে পাওয়া যায়নি | নিশ্চিত করুন যে মাভেন স্থানাঙ্কগুলি (groupId, artifactId, সংস্করণ) সঠিক এবং প্যাকেজটি সংগ্রহস্থলে বিদ্যমান। |
| স্টার্টআপ পারফরম্যান্স ওভারহেড | মনে রাখবেন যে এই পদ্ধতিটি রানটাইমে নির্ভরতা নিয়ে আসে। যদি স্টার্টআপটি ধীর হয়, বা আপনি যদি কোনও ওওএম ত্রুটি বা টাইমআউটের মুখোমুখি হন তবে দ্রুত স্টার্টআপগুলির জন্য ডকার চিত্রটিতে বেকিং নির্ভরতা বিবেচনা করুন। |
3. পিপ ইনস্টল সঙ্গে জুপিটার নোটবুক লাইব্রেরি ইনস্টল করা
দ্রুত ইন্টারেক্টিভ পরীক্ষার জন্য, আপনি পাইপ ব্যবহার করে একটি জুপিটার নোটবুকের মধ্যে লাইব্রেরি ইনস্টল করতে পারেন। এটি অ্যাড-হক পদ্ধতিতে কিছু পরীক্ষা করার একটি দ্রুত উপায়, তবে এটি অস্থায়ী অন্বেষণের বাইরে কোনও কিছুর জন্য প্রস্তাবিত নয়।
যেমন
আপনি যদি ইলাম জুপিটার নোটবুকে স্পার্ক সেশন চালাচ্ছেন এবং একটি নতুন পাইথন প্যাকেজের প্রয়োজন হয় তবে আপনি এটি এভাবে ইনস্টল করতে পারেন:
% % স্ফুলিঙ্গ
আমদানি উপ-প্রক্রিয়া
ফলাফল = উপ-প্রক্রিয়া . check_output ( [ "পিপ" , "ইনস্টল করুন" , "জিওপান্ডাস" ] )
মুদ্রণ ( ফলাফল . ডিকোড করুন ( ) )
This will install the package in the notebook’s environment so you can use it immediately.
% % স্ফুলিঙ্গ
আমদানি উপ-প্রক্রিয়া
ফলাফল = উপ-প্রক্রিয়া . check_output ( [ "পিপ" , "তালিকা" ] )
মুদ্রণ ( ফলাফল . ডিকোড করুন ( ) )
Why It’s Not Recommended
- এইভাবে ইনস্টল করা প্যাকেজগুলি কেবলমাত্র বর্তমান স্পার্ক সেশনে সুলভ।
- সেশন পুনঃসূচনা বা নতুন সেশন জুড়ে পরিবেশ স্থায়ী হয় না।
- এটি আপনার বিকাশের পরিবেশ এবং উত্পাদন স্পার্ক রানটাইমের মধ্যে অসঙ্গতি সৃষ্টি করতে পারে।
সর্বোত্তম অনুশীলন
- এই পদ্ধতিটি কেবল দ্রুত, ফেলে দেওয়া প্রোটোটাইপিংয়ের জন্য ব্যবহার করুন।
- আপনি যদি নিজেকে কোনও পিপ-ইনস্টলড লাইব্রেরির উপর নির্ভর করতে দেখেন তবে এটি স্থায়ীত্বের জন্য একটি প্রয়োজনীয়তা ফাইল বা ডকার চিত্রে যুক্ত করুন।
- নোটবুকে আপনার যে কোনও প্যাকেজ ইনস্টল করতে হয়েছিল তা নথিভুক্ত করুন যাতে আপনি পরে আপনার পরিবেশটি সঠিকভাবে আপডেট করতে পারেন।
সমস্যা সমাধান
| সমস্যা | সমাধান |
|---|---|
| প্যাকেজ খুঁজে পাওয়া যায়নি | Make sure you spelled the package name correctly and that it’s available on PyPI (the Python Package Index). |
| ইনস্টলেশনের পরে মডিউল পাওয়া যায়নি | যদি আপনি একটি প্যাকেজ ইনস্টল করেন কিন্তু এটি আমদানি করতে না পারেন, তাহলে নতুন প্যাকেজের সাথে পরিবেশটি পুনরায় লোড করতে নোটবুক কার্নেলটি পুনঃশুরু করার চেষ্টা করুন. |
চূড়ান্ত সুপারিশ
- উৎপাদন কাজের চাপ: একটি ব্যবহার করুন কাস্টম ডকার চিত্র সমস্ত নির্ভরতা প্রাক ইনস্টল সঙ্গে। এটি দ্রুত প্রারম্ভিক সময়ের সাথে একটি স্থিতিশীল এবং পুনরুত্পাদনযোগ্য পরিবেশ দেয়।
- টেস্টিং বা প্রোটোটাইপিং: ব্যবহার
স্পার্ক.জারস.প্যাকেজসএবং একটিpyrequirements.txtনমনীয়তার জন্য। এটি আপনাকে কোনও নতুন চিত্র তৈরি না করে দ্রুত পরীক্ষা করতে দেয়, যদিও এটি স্টার্টআপ ওভারহেড বহন করতে পারে। - ইন্টারেক্টিভ পরীক্ষা: জুপিটার নোটবুকগুলির মাধ্যমে ইনস্টল করা স্বল্পকালীন পরীক্ষার জন্য সুবিধাজনক, তবে সংরক্ষণ করা বা আবার চালানো দরকার এমন কোনও কিছুর জন্য সর্বদা আরও শক্তিশালী সমাধান (ডকার চিত্র বা প্রয়োজনীয়তা ফাইল) এ স্থানান্তর করুন।
এই অনুশীলনগুলি অনুসরণ করে, আপনি সামঞ্জস্যতার সমস্যা এবং রানটাইম ত্রুটিগুলি হ্রাস করার সময় ইলুমে স্পার্ক নির্ভরতাগুলি দক্ষতার সাথে পরিচালনা করতে পারেন।