2015-04-04 5 views
5

मैं एक पाइथन फ़ाइल स्पार्क-सबमिट कर रहा हूं जो numpy आयात करता है लेकिन मुझे no module named numpy त्रुटि मिल रही है।स्पार्क सबमिट करने पर कोई मॉड्यूल नहीं है

$ spark-submit --py-files projects/other_requirements.egg projects/jobs/my_numpy_als.py 
Traceback (most recent call last): 
    File "/usr/local/www/my_numpy_als.py", line 13, in <module> 
    from pyspark.mllib.recommendation import ALS 
    File "/usr/lib/spark/python/pyspark/mllib/__init__.py", line 24, in <module> 
    import numpy 
ImportError: No module named numpy 

मैं सोच रहा था मैं numpy -python-फ़ाइलों के लिए एक अंडे में खींच सकता है, लेकिन मैं मुसीबत पता लगाना है कि अंडे का निर्माण करने के लिए कैसे हो रही है। लेकिन फिर यह मेरे लिए हुआ कि pyspark खुद numpy का उपयोग करता है। यह मूर्खतापूर्ण के अपने संस्करण में खींचने के लिए मूर्खतापूर्ण होगा।

यहां उचित चीज़ पर कोई विचार है?

उत्तर

3

ऐसा लगता है कि स्पार्क पाइथन के एक संस्करण का उपयोग कर रहा है जिसमें numpy स्थापित नहीं है। ऐसा इसलिए हो सकता है क्योंकि आप वर्चुअल वातावरण के अंदर काम कर रहे हैं।

इस प्रयास करें:

# The following is for specifying a Python version for PySpark. Here we 
# use the currently calling Python version. 
# This is handy for when we are using a virtualenv, for example, because 
# otherwise Spark would choose the default system Python version. 
os.environ['PYSPARK_PYTHON'] = sys.executable 
+0

वर्तमान में उपयोग कर रहे पाइथन बाइनरी के लिए पूर्ण SciPy या स्वतंत्र NumPy पैकेज स्थापित करने का प्रयास करें: http://www.scipy.org/install.html –

0

कभी कभी, जब आप कुछ पुस्तकालयों आयात करते हैं, अपने नाम स्थान numpy कार्यों के साथ प्रदूषित कर रहा है। min, max और sum जैसे कार्य विशेष रूप से इस प्रदूषण के लिए प्रवण हैं। जब भी संदेह हो, इन कार्यों को कॉल का पता लगाएं और __builtin__.sum आदि के साथ इन कॉल को प्रतिस्थापित करें। ऐसा करने से प्रदूषण स्रोत का पता लगाने से कभी-कभी तेज़ हो जाएगा।

0

मुझे यह एक छोटी बूटस्ट्रैपिंग स्क्रिप्ट को कॉन्फ़िगर करके सभी emr-nodes पर numpy इंस्टॉल करके काम करने के लिए मिला है जिसमें निम्न (अन्य चीजों के साथ) शामिल है।

#!/bin/bash -xe sudo yum install python-numpy python-scipy -y

फिर जब आप एडब्ल्यूएस के लिए निम्न विकल्प जोड़कर अपने क्लस्टर शुरू निष्पादित करने के लिए बूटस्ट्रैप स्क्रिप्ट कॉन्फ़िगर ईएमआर आदेश

--bootstrap-actions Path=s3://some-bucket/keylocation/bootstrap.sh,Name=setup_dependencies,Args=[s3://some-bucket]

(निम्न उदाहरण बूटस्ट्रैप स्क्रिप्ट के एक तर्क देता है)

इसका उपयोग डेटापलाइन से स्वचालित रूप से क्लस्टर सेट करते समय भी किया जा सकता है।

संबंधित मुद्दे