मैं एक ओजी नौकरी स्थापित करने की कोशिश कर रहा हूं जो एक पायथन लिपि को ट्रिगर करता है। कृपया ध्यान दें कि यह एक पाइस्पार्क एप्लिकेशन नहीं है बल्कि एक सामान्य पायथन लिपि है।

मैं चाहता हूं कि यह कार्य केवल मास्टर नोड पर चलाया जाए (क्योंकि मैंने अकेले मास्टर नोड पर आवश्यक आश्रित पुस्तकालय स्थापित किए हैं)।

क्या ओजी शेड्यूलिंग से मास्टर पर इस नौकरी को चलाने का कोई तरीका है?

आपके उत्तरों की बहुत सराहना की जाती है!.

मैंने मास्टर नोड पर आश्रित पुस्तकालय स्थापित किए हैं और मैन्युअल रूप से पायथन स्क्रिप्ट चलाई है, यह अपेक्षा के अनुरूप काम कर रहा है। मैं अभी कोशिश कर रहा हूं कि इसे ओजी से शेड्यूल किया जाए।

0
user3848064 5 सितंबर 2019, 18:28

3 जवाब

ऊजी में अजगर क्रिया जैसी कोई चीज नहीं होती है। निकटतम चीज जो आप कर सकते हैं वह है ओजी से शेल एक्शन को कॉल करना और शेल स्क्रिप्ट को पायथन कोड का आह्वान करना है।

 <action name="action_name">
        <shell xmlns="uri:oozie:shell-action:0.1">
            ...
            ...
            <exec>shell_script.sh</exec>
            <argument>[ARGS]</argument>
            <file>[FULL_PATH_TO_SHELL_SCRIPT]</file>
        </shell>
        <ok to ="action2"/>
        <error to = "action2"/>
 </action>
0
Jon Snow 21 अक्टूबर 2019, 18:00

यह मानते हुए कि आप अपने कोड में pyspark स्टेप डालने का तरीका देख रहे हैं

आप या तो एक shell-action शेड्यूल करते हैं और spark-submit कमांड डालते हैं: https://oozie.apache.org/docs/3.3.0/DG_ShellActionExtension. एचटीएमएल

या आप समर्पित spark नोड का उपयोग कर सकते हैं: https://oozie.apache.org/docs/4.2.0/DG_SparkActionExtension. एचटीएमएल

0
Grzegorz Skibinski 21 अक्टूबर 2019, 18:21

बस एक नियमित शेल-एक्शन का उपयोग करें। Oozie को उस भाषा की परवाह नहीं है जिसमें स्क्रिप्ट लिखी गई है। दुभाषिया का चयन स्क्रिप्ट के हैशबैंग.

बस याद रखें कि script.py की पहली पंक्ति कुछ इस तरह होनी चाहिए #!/usr/bin/python3 (या जहां भी आपका पायथन दुभाषिया है), फिर पायथन स्क्रिप्ट को कॉल करने के लिए नमूना Oozie क्रिया इस तरह दिख सकती है (यानी सुंदर मानक):

  <action name='run_python_script'>
    <shell xmlns="uri:oozie:shell-action:0.1">
      <job-tracker>${jobTracker}</job-tracker>
      <name-node>${nameNode}</name-node>
      <exec>script.py</exec>
      <argument>some argument</argument>
      <argument>some other argument<argument>
      <file>script.py</file>
    </shell>
    <ok to="end" />
    <error to="fail" />
  </action>

यदि आप पायथन लिपि में हैशबैंग जोड़ना भूल जाते हैं, तो OS इसे /bin/sh के साथ चलाने का प्रयास करेगा जो संभवत: कुछ सिंटैक्स त्रुटि के साथ विफल हो जाएगा।

0
Czaporka 2 नवम्बर 2020, 22:13