2015-11-25 11 views
5

This page inspirował mnie do wypróbowania zapłonową-CSV do odczytu pliku .csv w Pyspark znalazłem kilka stanowisk, takich jak this opisujących jak używać spark-csvJak załadować dependenices słoik ipython Notebook

Ale jestem nie można zainicjować instancji ipython, włączając do rozruchu plik .jar lub rozszerzenie pakietu, które można wykonać za pomocą iskrzenia powłoki.

Oznacza to, że zamiast ipython notebook --profile=pyspark, wypróbowałem ipython notebook --profile=pyspark --packages com.databricks:spark-csv_2.10:1.0.3, ale nie jest to obsługiwane.

Prosimy o radę.

Odpowiedz

10

Można go po prostu przekazać w zmiennej PYSPARK_SUBMIT_ARGS. Na przykład:

export PACKAGES="com.databricks:spark-csv_2.11:1.3.0" 
export PYSPARK_SUBMIT_ARGS="--packages ${PACKAGES} pyspark-shell" 

Te właściwości można również ustawić dynamicznie w kodzie przed SparkContext/SparkSession i odpowiadające JVM zostały uruchomione:

packages = "com.databricks:spark-csv_2.11:1.3.0" 

os.environ["PYSPARK_SUBMIT_ARGS"] = (
    "--packages {0} pyspark-shell".format(packages) 
) 
+0

Czy to nie zastąpi wszystkiego, co jest już w "os.environ [" PYSPARK_SUBMIT_ARGS "]'? Myślę, że trzeba o tym wspomnieć, ponieważ spędziłem dużo czasu, zastanawiając się, co się stało –

7

Wierzę, można również dodać to jako zmiennej do listy plik spark-defaults.conf. Więc coś takiego:

spark.jars.packages com.databricks:spark-csv_2.10:1.3.0 

Spowoduje to załadowanie biblioteki spark-csv do PySpark przy każdym uruchomieniu sterownika.

Oczywiście zera odpowiedź jest bardziej elastyczny, ponieważ można dodać te linie do swojej aplikacji PySpark przed zaimportować pakiet PySpark:

import os 
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.databricks:spark-csv_2.10:1.3.0 pyspark-shell' 

from pyspark import SparkContext, SparkConf 

ten sposób importujesz tylko pakiety rzeczywiście potrzebne do skryptu.

+0

Jeśli używasz notebooka, jest to zdecydowanie najbardziej przenośna opcja: używam wersji z pełnym zapłonem, a to odblokowuje parsowanie CSV dla wszystkich trzech języków naraz. – mrArias