2016-10-03 6 views
8

में आयात के साथ स्पार्क समस्याएं हम एक पाइथन स्क्रिप्ट पर स्पार्क-सबमिट कमांड चला रहे हैं जो स्पार्क का उपयोग कैफे का उपयोग करके पाइथन में ऑब्जेक्ट डिटेक्शन को समानांतर करने के लिए करता है। यदि पाइथन-केवल स्क्रिप्ट में चलाया जाता है तो स्क्रिप्ट स्वयं पूरी तरह ठीक हो जाती है, लेकिन स्पार्क कोड के साथ इसका उपयोग करते समय यह आयात त्रुटि लौटाती है। मुझे पता है कि स्पार्क कोड समस्या नहीं है क्योंकि यह मेरी होम मशीन पर पूरी तरह से ठीक काम करता है, लेकिन यह एडब्ल्यूएस पर अच्छा काम नहीं कर रहा है। मुझे यकीन नहीं है कि अगर किसी को पर्यावरण चर के साथ ऐसा करना है, तो ऐसा लगता है कि यह उन्हें नहीं ढूंढता है।पायथन

ये वातावरण चर सेट कर रहे हैं:

SPARK_HOME=/opt/spark/spark-2.0.0-bin-hadoop2.7 
PATH=$SPARK_HOME/bin:$PATH 
PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH 
PYTHONPATH=/opt/caffe/python:${PYTHONPATH} 

त्रुटि:

16/10/03 01:36:21 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, 172.31.50.167): org.apache.spark.api.python.PythonException: Traceback (most recent call last): 
File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/worker.py", line 161, in main 
    func, profiler, deserializer, serializer = read_command(pickleSer, infile) 
File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/worker.py", line 54, in read_command 
    command = serializer._read_with_length(file) 
File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/serializers.py", line 164, in _read_with_length 
    return self.loads(obj) 
File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/serializers.py", line 422, in loads 
    return pickle.loads(obj) 
File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/cloudpickle.py", line 664, in subimport 
    __import__(name) 
ImportError: ('No module named caffe', <function subimport at 0x7efc34a68b90>, ('caffe',)) 

क्या किसी को पता है कि क्यों यह कोई मुद्दा हो सकता है?

याहू से यह पैकेज हम कैफे को एक जार निर्भरता के रूप में शिपिंग करके करने की कोशिश कर रहे हैं और फिर इसे पायथन में फिर से उपयोग करते हैं। लेकिन मुझे इसे बनाने और इसे आयात करने के तरीके पर कोई संसाधन नहीं मिला है।

https://github.com/yahoo/CaffeOnSpark

+0

शायद आप सुझाए गए अनुसार '.egg' का उपयोग करके अजगर पैकेज को लोड करने का प्रयास कर सकते हैं [http] //stackoverflow.com/questions/24686474/shipping-python-modules-in-pyspark-to-other-nodes) –

+0

कोशिश की, काम नहीं किया। मैंने गुमराह किया है कि स्पष्ट रूप से मुझे इसे एक जार पैकेज के रूप में निर्यात करना है, लेकिन मुझे नहीं पता कि इसे कैसे बनाया जाए और फिर इसे पायथन पर आयात करें। – alfredox

+0

यदि आपने स्रोत से कैफे बनाया है, तो क्या आपने कैफ़े लाइब्रेरी को मैन्युअल रूप से 'LD_LIBRARY_PATH' में जोड़ने का प्रयास किया था? क्या आपने पाइथन टर्मिनल से कैफे आयात करने का प्रयास किया था? – ar7

उत्तर

4

आप शायद अपने AWS वातावरण में Caffe अजगर रैपर संकलित नहीं किया है। उन कारणों से जो मुझे पूरी तरह से बचते हैं (और कई अन्य, https://github.com/BVLC/caffe/issues/2440) pycaffe एक pypi पैकेज के रूप में उपलब्ध नहीं है, और आपको इसे स्वयं संकलित करना होगा। यदि आप एडब्लूएस ईबी पर्यावरण में हैं तो आपको संकलन/निर्देशों का पालन करना चाहिए या इसे स्वचालित करना चाहिए: http://caffe.berkeleyvision.org/installation.html#python

+0

मेरे पास है, मैंने आईपीथॉन कमांड भी चलाया है, और फिर "आयात कैफे" किया और यह ठीक काम किया। वास्तव में मैं प्रत्येक नोड में अकेले शुद्ध पायथन लिपि स्टैंड चला सकता हूं, और वे सभी कैफे पूरी तरह ठीक आयात करते हैं और सभी प्रसंस्करण करते हैं। यह केवल क्लस्टर मोड में है कि किसी कारण से यह सभी env vars को अनदेखा करता है और कैफे लेने नहीं चाहता है। – alfredox

+0

@alfredox: आप ipython कहां चलाते हैं कि आप कैफे आयात कर सकते हैं? – 2ps

+0

कार्यकर्ता नोड्स में "ubuntu" उपयोगकर्ता के रूप में। तो आपके पास आपका स्वामी है, और फिर मजदूर क्लस्टर बनाने के लिए मास्टर से जुड़ते हैं। मैंने भाग लिया है कि प्रत्येक कार्यकर्ता नोड पर और सभी ठीक काम करता है। यह लगभग उतना ही है जब श्रमिकों को उस स्क्रिप्ट को चलाने के लिए मास्टर से कार्य प्राप्त होते हैं, वे किसी प्रकार के कंटेनर के अंदर कार्य चला रहे हैं जो उन्हें अन्य फाइल सिस्टम तक पहुंच नहीं देता है जैसे कि सही तरीके से ऑप्ट/कैफे पथ पाइथन के अंदर पुस्तकालय आयात करें। – alfredox