अनुसूची
विहंगावलोकन
Ilum Schedule आपको सहजता से एक सहज, उपयोगकर्ता के अनुकूल इंटरफेस के माध्यम से व्यक्तिगत नौकरियों के लिए शेड्यूल सेट अप और प्रबंधित करने देता है। यह निष्पादन समयसीमा को आसानी से कॉन्फ़िगर करने की प्रक्रिया को सरल करता है।
हुड के तहत, यह सुविधा कुबेरनेट्स क्रोनजॉब्स का लाभ उठाती है, जो क्रोन अभिव्यक्तियों का उपयोग ठीक से परिभाषित करने के लिए करती है कि नौकरियों को कब चलाना चाहिए। निर्धारित समय पर, क्रोनजॉब इलम के बैकएंड के अनुरोध को ट्रिगर करता है, जो एकल नौकरी के निर्माण को ऑर्केस्ट्रेट करता है।
बक्सों का इस्तेमाल करें
डेटा अंतर्ग्रहण
समय-समय पर बाहरी एपीआई या अन्य स्रोतों से डेटा प्राप्त करें और इसे आगे की प्रक्रिया या विश्लेषण के लिए डेटाबेस या फाइल सिस्टम में लोड करें।
डेटा पाइपलाइन ऑर्केस्ट्रेशन (ETL)
स्पार्क-आधारित ईटीएल (एक्सट्रैक्ट, ट्रांसफॉर्म, लोड) नौकरियों को स्वचालित करें जो कई स्रोतों से कच्चे डेटा निकालते हैं, जटिल परिवर्तन लागू करते हैं, और लोड करते हैं डेटा वेयरहाउस में परिणाम
विश्लेषण के लिए रिपोर्ट तैयार करना और डेटा एकत्रीकरण
विभिन्न स्रोतों (जैसे, लॉग, बिक्री डेटा, उपयोगकर्ता इंटरैक्शन) से बड़े डेटासेट को सारांश तालिकाओं में एकत्रित करने के लिए एक स्पार्क कार्य शेड्यूल करें जिनका उपयोग डैशबोर्ड और रिपोर्ट.
डेटा क्लीनअप
एक स्पार्क कार्य शेड्यूल करें जो डेटा क्लीनअप करता है, जैसे डुप्लिकेट निकालना, अमान्य प्रविष्टियों को सुधारना, या संग्रहीत बड़े डेटासेट में डेटा फ़िल्टर करना एक वितरित प्रणाली में
आरंभ
अनुसूचित पायथन नौकरी
नीचे दिया गया उदाहरण पायथन में एक साधारण स्पार्क जॉब है जो यादृच्छिक डेटा उत्पन्न करता है और इसे एस 3 बाल्टी में लिखता है। यह कार्य किसी निर्दिष्ट समय अंतराल पर चलने के लिए शेड्यूल किया जाएगा.
-
एक ही काम लिखें
से पिस्पार्क.एसक्यूएल आयात स्पार्कसेशन
से पिस्पार्क.एसक्यूएल आयात डेटाफ्रेम
से पिस्पार्क.एसक्यूएल आयात हो-हल्ला
आयात यादृच्छिक
से दिनांक समय आयात दिनांक समय
डीईएफ़ generate_sample_data(n):
लौटना [हो-हल्ला(परिचय=मैं, नाम=च"Name_{मैं}", मूल्य=यादृच्छिक.रैंडरेंज(70, 100)) के लिए मैं में श्रेणी(n)]
अगर __नाम__ == "__main__":
उत्तेजक गुण = स्पार्कसेशन.भवन-निर्माता\
.ऐप का नाम("माई स्पार्क जॉब") \
.getOrCreate()
डाटा = generate_sample_data(100)
लोमो = उत्तेजक गुण.createDataFrame(डाटा)
current_datetime = दिनांक समय.अब()
current_timestamp = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
output_path = f"s3a://ilum-files/generated_data/{current_timestamp}"
लोमो.लिखना.मोड समूह("अधिलेखन").लकड़ी(output_path)
उत्तेजक गुण.रुको()फ़ाइल को इस रूप में सहेजें
<आपका फ़ाइल नाम>.py -
शेड्यूल बनाना
अपना शेड्यूल बनाते समय, निम्न निर्दिष्ट करें:
- सामान्य टैब:
- नाम: अनुसूची का नाम
- गुच्छा: वह क्लस्टर जिस पर कार्य चलेगा
- भाषा: इस मामले में पायथन
- कक्षा:
<आपका फ़ाइल नाम>बिना.pyविस्तार
- समय टैब:
- Pick a value that suits your needs. A custom CRON expression can be used if the predefined options don’t meet your requirements.

- Pick a value that suits your needs. A custom CRON expression can be used if the predefined options don’t meet your requirements.
- संसाधन टैब:
- पायफाइल्स: पायथन स्क्रिप्ट अपलोड करें
- सामान्य टैब:
-
नौकरियों के दिखने के लॉग का निरीक्षण करें
आपके द्वारा शेड्यूल बनाने के बाद, यह पहले से ही सक्रिय है और आपके द्वारा निर्दिष्ट सेटिंग्स के अनुसार कार्य लॉन्च करेगा।
अनुसूची द्वारा शुरू की गई एकल नौकरियां नियमित इलम एकल नौकरियों की तरह ही व्यवहार करती हैं: उदाहरण के लिए, आप जा सकते हैं नौकरियों शेड्यूल द्वारा लॉन्च की गई नौकरियों की सूची देखने के लिए टैब।

अनुसूचित स्काला नौकरी
यह उदाहरण पायथन के समान है, लेकिन स्काला में लिखा गया है।
-
एक एसबीटी प्रोजेक्ट बनाएं
प्रोजेक्ट बनाते समय, इसमें शामिल करना महत्वपूर्ण है
स्पार्क-एसक्यूएलमें निर्भरताबिल्ड.एसबीटीरेती।libraryDependencies += "org.apache.spark" %% "स्पार्क-एसक्यूएल"% "3.5.3"% "प्रदान किया गया"ध्यान रखें कि निर्भरता का संस्करण क्लस्टर पर चल रहे स्पार्क के संस्करण से मेल खाना चाहिए।
-
एकल कार्य लिखना और संकलित करना
आयात org.apache.उत्तेजक गुण.एसक्यूएल.types.{IntegerType, StringType, StructField, StructType}
आयात org.apache.उत्तेजक गुण.एसक्यूएल.{हो-हल्ला, स्पार्कसेशन}
आयात java.time.LocalDateTime
आयात java.time.format.DateTimeFormatter
आयात scala.util.Random
वस्तु मुख्य {
private डीईएफ़ generateSampleData(n: Int): Seq[हो-हल्ला] = {
(0 until n).मानचित्र(मैं => हो-हल्ला(मैं, दक्षिणी"Name_$मैं", Random.nextInt(30) + 70))
}
डीईएफ़ मुख्य(आर्ग्स: Array[String]): Unit = {
val उत्तेजक गुण = स्पार्कसेशन.builder()
.ऐप का नाम("माई स्पार्क जॉब")
.getOrCreate()
val डाटा = generateSampleData(100)
val लोमो = उत्तेजक गुण.createDataFrame(
उत्तेजक गुण.स्पार्ककॉन्टेक्स्ट.समानांतर करें(डाटा),
StructType(
List(
StructField("आईडी", IntegerType, nullable = गलत),
StructField("नाम", StringType, nullable = गलत),
StructField("value", IntegerType, nullable = गलत)
)
)
)
val currentDateTime = LocalDateTime.अब()
val currentTimestamp = currentDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
val outputPath = दक्षिणी"s3a://ilum-files/generated_data/$currentTimestamp"
लोमो.लिखना.मोड समूह("अधिलेखन").लकड़ी(outputPath)
उत्तेजक गुण.रुको()
}
}अब परियोजना को एक जार फ़ाइल में संकलित किया जा सकता है। जबकि आम तौर पर आप सभी निर्भरताओं के साथ एक 'वसा जार' चाहते हैं, यह काम क्लस्टर द्वारा प्रदान की गई निर्भरताओं के साथ चलाने के लिए काफी सरल है।
प्रोजेक्ट को त्वरित रूप से पैकेज करने के लिए,
एसबीटी पैकेजआज्ञा। -
शेड्यूल बनाना
अपना शेड्यूल बनाते समय, निम्न निर्दिष्ट करें:
- सामान्य टैब:
- नाम: अनुसूची का नाम
- गुच्छा: वह क्लस्टर जिस पर कार्य चलेगा
- भाषा: इस मामले में स्काला
- कक्षा: कैनोनिकल वर्ग का नाम। हमारे मामले में sbt को क्लास फाइल को जार की जड़ में रखना चाहिए, इसलिए
मुख्यपर्याप्त होना चाहिए।
- समय टैब:
- Pick a value that suits your needs. A custom CRON expression can be used if the predefined options don’t meet your requirements.

- Pick a value that suits your needs. A custom CRON expression can be used if the predefined options don’t meet your requirements.
- संसाधन टैब:
- जार: JAR फ़ाइल अपलोड करें
- सामान्य टैब:
-
नौकरियों के दिखने के लॉग का निरीक्षण करें
आपके द्वारा शेड्यूल बनाने के बाद, यह पहले से ही सक्रिय है और आपके द्वारा निर्दिष्ट सेटिंग्स के अनुसार कार्य लॉन्च करेगा।
अनुसूची द्वारा शुरू की गई एकल नौकरियां नियमित इलम एकल नौकरियों की तरह ही व्यवहार करती हैं: उदाहरण के लिए, आप जा सकते हैं नौकरियों शेड्यूल द्वारा लॉन्च की गई नौकरियों की सूची देखने के लिए टैब।

उदाहरण शेड्यूल लोड हो रहा है
Ilum नए उपयोगकर्ताओं को शीघ्रता से आरंभ करने में मदद करने के लिए एक उदाहरण अनुसूची प्रदान करता है।
उदाहरण शेड्यूल लोडिंग सक्षम है डिफ़ॉल्ट रूप से। हालाँकि, आप इसका उपयोग करके इसे अक्षम कर सकते हैं --सेट ilum-core.examples.schedule=false.
युक्तियाँ
क्रॉन अभिव्यक्तियों की पूरी शक्ति का लाभ उठाएं
जबकि इलम शेड्यूलिंग के लिए पूर्वनिर्धारित विकल्पों के साथ आता है, आप अधिक जटिल शेड्यूल सेट करने के लिए कस्टम क्रॉन एक्सप्रेशन का भी उपयोग कर सकते हैं।
क्रॉन अभिव्यक्ति में 5 फ़ील्ड होते हैं:
* - हर बार इकाई
? - किसी भी समय इकाई (? सप्ताह-दिवस क्षेत्र में कार्य-दिवस की उपेक्षा करने में परिणाम)
- - रेंज (1-5)
, - मान: (1,5)
/ - वेतन वृद्धि (मिनट क्षेत्र में 5/15 = 5, 20, 35, 50)
उदाहरण:
हर घंटे:
0 * * * *
प्रत्येक रविवार सुबह 3 बजे:
0 3 * * 0
हर 15 मिनट हर दिन:
0/15 0 * * ?
हर पांच मिनट दोपहर 1 बजे शुरू होता है, दोपहर 1:55 बजे समाप्त होता है और फिर शाम 6 बजे शुरू होता है और शाम 6:55 बजे समाप्त होता है, हर दिन:
0/5 13,18 * * ?
यदि आप अधिक जानना चाहते हैं, तो देखें कुबेरनेट्स का क्रॉन जॉब डॉक्यूमेंटेशन.
शेड्यूलिंग से पहले अपनी नौकरी का परीक्षण करें
अनुसूचित नौकरियां समय-समय पर लॉन्च की जाती हैं, इसलिए यह सुनिश्चित करना आवश्यक है कि नौकरी सही ढंग से काम करती है। क्योंकि अनुसूचित नौकरियां नियमित एकल नौकरियों के समान व्यवहार करती हैं, आप शेड्यूल बनाने से पहले एकल कार्य लॉन्च करके निष्पादन का परीक्षण कर सकते हैं।
शेड्यूल ने शुरू की इलम सिंगल जॉब्स
अनुसूचित नौकरियों को इलम एकल नौकरियों के रूप में लॉन्च किया जाता है। इसका मतलब है कि एकल नौकरियों के लिए उपलब्ध आपके सभी कॉन्फ़िगरेशन, लॉग, आउटपुट और अन्य सुविधाएँ अनुसूचित नौकरियों के लिए भी उपलब्ध हैं।
जरूरत न होने पर शेड्यूल बंद कर दें
यदि आपको समय-समय पर नौकरी शुरू करने की आवश्यकता नहीं है, तो आपको संसाधन अपशिष्ट से बचने के लिए शेड्यूल बंद कर देना चाहिए। ऐसा करने के लिए, आप पर क्लिक कर सकते हैं रुकना बटन में कार्यक्रम बिल।
एक नया शेड्यूल बनाने के बजाय अपने शेड्यूल संपादित करें
यदि आप किसी मौजूदा शेड्यूल के कॉन्फ़िगरेशन परिवर्तित करना चाहते हैं, तो क्लिक करें संपादन करना उस पर।