2016-08-07 43 views
7

से बाह्य पुस्तकालय आयात करें मैंने अमेज़ॅन ईएमआर का उपयोग करके क्लस्टर स्थापित किया है। मेरे पास एक पायथन लाइब्रेरी है (जीथ्यूब से क्लोन और पीपी पर उपलब्ध नहीं है) एस 3 पर।एडब्ल्यूएस ईएमआर एस 3

मैं एक सुअर का काम सबमिट करना चाहता हूं जो एक udf का उपयोग करता है जो S3 में मौजूद लाइब्रेरी का उपयोग करता है।

मैं पुस्तकालय को सिस्टम पथ में नहीं जोड़ना चाहता क्योंकि यह केवल एक बार उपयोग किया जाएगा।

मैं कुछ भी सार्थक कोशिश करने में सक्षम नहीं हूं क्योंकि मुझे इस समस्या से निपटने के तरीके पर नुकसान हुआ है, इसलिए मेरे पास अब तक कोई कोड नमूने या विधियां नहीं हैं। मदद की सराहना की जाएगी! :)

उत्तर

0

सावधानीपूर्वक निम्नलिखित दी गई सामग्री को पढ़ें।

कॉल उपयोगकर्ता सुअर से परिभाषित किया जाता है कार्य:

सुअर सुअर स्क्रिप्ट के भीतर से उपयोगकर्ता परिभाषित कार्यों (UDFs) फोन करने की क्षमता प्रदान करता है। आप अपनी सुअर स्क्रिप्ट में उपयोग करने के लिए कस्टम प्रसंस्करण को लागू करने के लिए ऐसा कर सकते हैं। वर्तमान में समर्थित भाषाओं जावा, पायथन/ज्योथन, और जावास्क्रिप्ट हैं। (हालांकि जावास्क्रिप्ट समर्थन अभी भी प्रयोगात्मक है।)

निम्नलिखित खंड वर्णन करते हैं कि पिग के साथ अपने कार्यों को कैसे पंजीकृत किया जाए ताकि आप उन्हें पिग खोल से या सुअर स्क्रिप्ट के भीतर से कॉल कर सकें। सुअर के साथ यूडीएफ का उपयोग करने के बारे में अधिक जानकारी के लिए, http://pig.apache.org/docs/r0.14.0/udf.html पर जाएं।

सुअर से कॉल जार फाइलें:

आप सुअर अपने सुअर लिपि में पंजीकृत आदेश का उपयोग कर के साथ कस्टम जार फ़ाइलों का उपयोग कर सकते हैं। जेएआर फ़ाइल स्थानीय या रिमोट फाइल सिस्टम है जैसे अमेज़ॅन एस 3। जब सुअर स्क्रिप्ट चलती है, तो अमेज़ॅन ईएमआर स्वचालित रूप से मास्टर नोड पर JAR फ़ाइल डाउनलोड करता है और फिर JAR फ़ाइल को हडोप वितरित कैश में अपलोड करता है। इस तरह, क्लस्टर में सभी उदाहरणों से जार फ़ाइल स्वचालित रूप से आवश्यक होती है।

सुअर

1.Upload अमेज़न S3 में अपना कस्टम JAR फ़ाइल के साथ जार फ़ाइलों का उपयोग करने के लिए।

2. कस्टम जेएआर फ़ाइल के अमेज़ॅन एस 3 पर बाल्टी निर्दिष्ट करने के लिए अपनी पिग स्क्रिप्ट में रजिस्ट्रार कमांड का उपयोग करें।

REGISTER s3://mybucket/path/mycustomjar.jar; 

सुअर

से कॉल अजगर/Jython स्क्रिप्ट आप सुअर के साथ पाइथन स्क्रिप्ट रजिस्टर कर सकते हैं और उसके बाद सुअर खोल से या एक सुअर लिपि में उन लिपियों में काम करता है कहते हैं। आप रजिस्टर कीवर्ड के साथ स्क्रिप्ट का स्थान निर्दिष्ट करके ऐसा करते हैं।

चूंकि पिग जावा में लिखा गया है, यह पाइथन स्क्रिप्ट को पार्स करने के लिए ज्योथन स्क्रिप्ट इंजन का उपयोग करता है। ज्योथन के बारे में अधिक जानकारी के लिए, http://www.jython.org/ पर जाएं।

सुअर

1.Write Python स्क्रिप्ट से एक अजगर/Jython स्क्रिप्ट कॉल और अमेज़न S3 में किसी स्थान पर स्क्रिप्ट अपलोड करने के लिए। यह एक ही खाते के स्वामित्व वाली बाल्टी होनी चाहिए जो सुअर क्लस्टर बनाता है, या उसके पास अनुमति सेट है ताकि क्लस्टर बनाया गया खाता इसे एक्सेस कर सके।इस उदाहरण में, स्क्रिप्ट को

s3://mybucket/pig/python. 

पर अपलोड किया गया है 2. एक सुअर क्लस्टर प्रारंभ करें। यदि आप ग्रंट शैल से पिग तक पहुंचेंगे, तो एक इंटरैक्टिव क्लस्टर चलाएं। यदि आप किसी स्क्रिप्ट से पिग कमांड चला रहे हैं, तो एक स्क्रिप्ट किए गए पिग क्लस्टर को प्रारंभ करें। इस उदाहरण में, हम एक इंटरैक्टिव क्लस्टर शुरू करेंगे।

3.Because हम एक इंटरैक्टिव क्लस्टर करेंगे अब SSH मास्टर नोड जहाँ हम ग्रंट खोल चला सकते हैं में शुरू की है, हम। मास्टर नोड में एसएसएच के बारे में अधिक जानकारी के लिए, मास्टर नोड में एसएसएच देखें।

4.Run ग्रंट आदेश पंक्ति पर सुअर टाइप करके सुअर के लिए खोल।

pig 

Jython पुस्तकालय और सुअर ग्रंट पर रजिस्टर कीवर्ड का उपयोग के साथ अपने अजगर स्क्रिप्ट 5.Register, शीघ्र आदेश के रूप में निम्नलिखित है, जहां आप अमेज़न S3 में अपनी स्क्रिप्ट का स्थान निर्दिष्ट हैं में दिखाया गया है।

grunt> register 'lib/jython.jar'; 
grunt> register 's3://mybucket/pig/python/myscript.py' using jython as myfunctions; 

6. इनपुट डेटा लोड करें। निम्नलिखित उदाहरण अमेज़ॅन एस 3 स्थान से इनपुट लोड करता है।

grunt> input = load 's3://mybucket/input/data.txt' using TextLoader as (line:chararray); 

7. अब आप अपनी स्क्रिप्ट में फ़िग के भीतर सेफफंक्शन का उपयोग करके संदर्भित करके अपने स्क्रिप्ट में फ़ंक्शंस को कॉल कर सकते हैं।

grunt> output=foreach input generate myfunctions.myfunction($1); 
संबंधित मुद्दे