2016-04-28 8 views
7

मुझे पाइस्पार्क का उपयोग करते हुए स्पार्क संदर्भ चर sc लोड करने के लिए आईपीथॉन नोटबुक को कॉन्फ़िगर करने के तरीके पर कई ट्यूटोरियल मिले (जैसे यह: http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/)।जुपीटर नोटबुक लॉन्च (स्पार्क बूट करने के लिए) पर कस्टम पायथन स्क्रिप्ट कैसे चलाएं?

समस्या यह है कि अब से हम आईपीथॉन नोटबुक की बजाय जुपीटर नोटबुक का उपयोग कर रहे हैं, हम स्पार्क कॉन्टेक्स्ट चर को लोड करने के लिए एक सेटअप स्क्रिप्ट नहीं बना सकते हैं जैसे हमने आईपीथॉन (जो ~/.ipython/profile_pyspark/startup/00-pyspark-setup.py में स्थित होना चाहिए) के साथ किया था।

सवाल यह है कि: जुपीटर नोटबुक पर कॉन्फ़िगरेशन क्या हैं जो स्टार्टअप पर स्क्रिप्ट 00-pyspark-setup.py निष्पादित करेगा?

+0

ऐसा लगता है कि आप चाहते हैं [अपाचे Toree] (https://github.com/apache/incubator-toree)। हालांकि, इसे सेटअप करने के लिए कुछ प्रयास करना पड़ता है। –

उत्तर

2

संपादित

मूल जवाब अभी भी काम करना चाहिए, लेकिन यह बोझल है और हम विधि आजकल निम्नलिखित PySpark चर में बनाया का उपयोग करता है का उपयोग करें:

export PYSPARK_DRIVER_PYTHON=jupyter 
export PYSPARK_DRIVER_PYTHON_OPTS="notebook" 

तो बस PySpark सीधे चलाने आप की तरह सामान्य रूप से, लेकिन उपर्युक्त चर सेट के साथ यह एक खोल के बजाय ज्यूपिटर नोटबुक शुरू करता है:

cd path/to/spark 
bin/pyspark --master local[*] # Change to use standalone/mesos/yarn master and add any spark config 

यदि आप एक नई नोटबुक शुरू करते हैं तो आपको स्पार्क आपके लिए सेट अप मिलेगा। आप की तरह Juopyter के लिए अन्य विकल्पों में जोड़ सकते हैं आप अपने वातावरण से मेल करना चाहते हैं,:

export PYSPARK_DRIVER_PYTHON_OPTS="notebook --ip='*' --no-browser" 

मूल जवाब

आप अभी भी एक ही प्रारंभिक चरणों के साथ चीजों को सेट कर सकते हैं, यानी ipython profile create pyspark का उपयोग कर एक प्रोफ़ाइल बना और $(ipython profile locate pyspark)/startup/ में स्टार्टअप स्क्रिप्ट रखें।

अगला, इसे जुपीटर नोटबुक में उपलब्ध कराने के लिए आपको एक फ़ाइल $(ipython locate)/kernels/pyspark/kernel.json फ़ाइल बनाकर उस प्रोफाइल का उपयोग करने वाले कर्नेल को निर्दिष्ट करना होगा। महत्वपूर्ण बिट

{ 
    "display_name": "PySpark", 
    "language": "python", 
    "argv": [ 
    "python", 
    "-m", "ipykernel", 
    "--profile=pyspark", 
    "-f", "{connection_file}" 
    ], 
    "env": { 
    "PYSPARK_SUBMIT_ARGS": " --master spark://localhost:7077 --conf spark.driver.memory=20000m --conf spark.executor.memory=20000m" 
    } 
} 

argv खंड में है: यह मेरा क्या लग रहा है की तरह है। env खंड में जानकारी स्टार्टअप स्क्रिप्ट के द्वारा उठाया जाता है मैं का उपयोग करें:

import os 
import sys 

spark_home = '/opt/spark/' 
os.environ["SPARK_HOME"] = spark_home 
sys.path.insert(0, spark_home + "/python") 
sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.9-src.zip')) 

pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "") 
pyspark_submit_args += " pyspark-shell" 
os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args 

filename = os.path.join(spark_home, 'python/pyspark/shell.py') 
exec(compile(open(filename, "rb").read(), filename, 'exec')) 

आप इसे काफी एक आप लिंक के समान है सिर्फ प्लस तर्क है कि कर्नेल में परिभाषित कर रहे हैं, और इसके अलावा देख सकते हैं pyspark-shell तर्क जो PySpark के नवीनतम संस्करण में आवश्यक है।

कण इस, आप jupyter notebook चला सकते हैं, एक ब्राउज़र में मुख्य पृष्ठ खोलने के लिए और आप अब इस नए कर्नेल का उपयोग कर नोटबुक बना सकते हैं:

create new pyspark notebook

+1

आपके उत्तर @sgvd के लिए धन्यवाद, मुझे लगता है कि हम करीब हैं। मैंने वास्तव में कर्नेल बनाया है, और अब, मेरी जुपीटर नोटबुक PySpark नई नोटबुक दिखा रहा है। लेकिन एक बार जब मेरी नोटबुक बनाई गई (कर्नेल पायस्पार्क के साथ) 'एससी' निष्पादित करने से एक खाली स्ट्रिंग लौटाती है ... (जिसका अर्थ है स्पार्क लोड नहीं होता है) आपके स्क्रिप्ट में किए गए एकमात्र परिवर्तन 'स्पार्क_होम' स्थान और py4j संस्करण को बदल रहे थे। मैंने 'kernel.json' नहीं बदला है (शायद मुझे चाहिए, विशेष रूप से' {connection_file} '?) – htaidirt

+0

स्पार्क का कौन सा संस्करण आप उपयोग कर रहे हैं?यह कम से कम 1.6.x के लिए मेरे लिए काम करता है। यह भी सुनिश्चित करें कि आप सही मास्टर यूआरएल का उपयोग कर रहे हैं। मेरे जवाब में से एक, 'स्पार्क: // लोकलहोस्ट: 7077' एक स्पार्क स्टैंडअलोन क्लस्टर के लिए है जो मास्टर को उसी मशीन पर चल रहा है जो जुपीटर के रूप में चल रहा है। यदि आप मेसोस या यार्न का उपयोग करते हैं, तो अपने गुरु को कहीं और चलाएं, या आपका मास्टर 'लोकलहोस्ट' पर नहीं सुनता है, आपको इसे बदलना होगा। – sgvd

+0

क्या आप इसे काम करने के लिए प्राप्त कर चुके हैं? – sgvd

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