2016-04-28 25 views
7

IPython Defter'in PySpark kullanarak Spark Context sc yükünü (bu gibi: http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/) yüklemek için nasıl yapılandırılacağı konusunda çeşitli eğiticiler buldum.Jupyter Defter uygulamasında özel Python betiği nasıl çalıştırılır (Spark'i önyüklemek için)?

Sorun şu ki, IPython Defter yerine Jupyter Defter kullanıyoruz, IPython ile yaptığımız gibi Spark Context değişkenini yüklemek için bir kurulum betiği oluşturamıyoruz (bu, ~/.ipython/profile_pyspark/startup/00-pyspark-setup.py'da bulunmalıdır).

Soru: Jupyter Defter üzerinde, başlangıçta komut dosyasını 00-pyspark-setup.py yürütecek olan yapılandırmalar nelerdir?

+0

Sesler [Apache Toree] (https://github.com/apache/incubator-toree). Yine de, kurulum için biraz çaba gerektirir. –

cevap

2

DÜZENLEME

orijinal cevap hala çalışır, ancak hantal ve biz değişkenlerin inşa PySpark kullandığı günümüzde aşağıdaki yöntemi kullanmalısınız:

export PYSPARK_DRIVER_PYTHON=jupyter 
export PYSPARK_DRIVER_PYTHON_OPTS="notebook" 

Sonra sizin gibi doğrudan PySpark çalıştırmak normalde, ancak yukarıdaki değişkenler ile bir kabuktan ziyade jupyter defterini başlatır:

Yeni bir not defteri başlatırsanız Spark'u sizin için kurmuş olursunuz. ipython profile create pyspark kullanarak bir profil oluşturmak Hala aynı başlangıç ​​adımlarla şeyleri ayarlayabilirsiniz

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

ORİJİNAL CEVAP yani: Eğer çevreyi eşleştirmek istiyorsanız gibi Juopyter için başka seçenekler ekleyebilir ve başlangıç ​​komut dosyasını $(ipython profile locate pyspark)/startup/'a yerleştirin.

Sonraki, Jupyter not defterlerinde kullanılabilir hale getirmek için, $(ipython locate)/kernels/pyspark/kernel.json dosya oluşturarak o profili kullanan bir çekirdek belirtmeniz gerekir. Önemli Bit argv bölümünde ise

{ 
    "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" 
    } 
} 

: Bu gibi benim bir şey. env bölümdeki bilgiler başlangıç ​​komut tarafından alınır kullandığım:

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')) 

bunu sadece artı çekirdekte tanımlanan argümanlar, ve ekleme Bağlı birine oldukça benzer görebileceğiniz gibi PySpark'ın en son sürümünde ihtiyaç duyulan pyspark-shell argümanı.

Hamsin bu, sen jupyter notebook işletilen bir tarayıcıda ana sayfa açmak ve şimdi bu yeni çekirdek kullanan defterleri oluşturabilir edebilirsiniz: İstediğiniz gibi

create new pyspark notebook

+1

Cevabınız için teşekkürler @sgvd, sanırım yakınız. Gerçekten çekirdeği yarattım ve şimdi Jupyter Defterim, PySpark'ın yeni dizüstü bilgisayarını gösteriyor. Fakat bir kez notebookum (kernel PySpark ile) oluşturulduğunda, sc 'i çalıştırmak boş bir dize döndürür ... (Bu da Spark yüklü değil). Scriptinize yaptığım tek değişiklik' spark_home' konumu ve py4j versiyonunu değiştiriyordu. 'Kernel.json' değiştiremedim (belki de özellikle {link_file} 'yerine getirmeliyim?) – htaidirt

+0

Spark'in hangi versiyonunu kullanıyorsunuz?Bu benim için en azından 1.6.x için çalışıyor. Ayrıca doğru ana URL’yi kullandığınızdan emin olun. Cevabımdaki "kıvılcım: // localhost: 7077", Jupyter ile aynı makinede çalışan master ile Spark bağımsız bir kümedir. Mesos veya İplik kullanıyorsanız, ustanızın başka bir yerde koşmasını sağlayın ya da master'ınız 'localhost'da dinlemez. Bunu değiştirmek zorundasınız. – sgvd

+0

Çalışmak için aldınız mı? – sgvd

İlgili konular