2015-06-10 9 views
23

ich bauen die Spark-csv und Lage, das gleiche von pyspark Shell verwendenWie jede neue Bibliothek wie funken csv in Apache hinzufügen Funken vorkompilierte Version

mit dem folgenden Befehl
bin/spark-shell --packages com.databricks:spark-csv_2.10:1.0.3 

Fehler bekommen

>>> df_cat.save("k.csv","com.databricks.spark.csv") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Users/abhishekchoudhary/bigdata/cdh5.2.0/spark-1.3.1/python/pyspark/sql/dataframe.py", line 209, in save 
    self._jdf.save(source, jmode, joptions) 
    File "/Users/abhishekchoudhary/bigdata/cdh5.2.0/spark-1.3.1/python/lib/py4j-0.8.2.1-src.zip/py4j/java_gateway.py", line 538, in __call__ 
    File "/Users/abhishekchoudhary/bigdata/cdh5.2.0/spark-1.3.1/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py", line 300, in get_return_value 
py4j.protocol.Py4JJavaError 

Wo sollte ich die JAR-Datei in meine Spark-Pre-Built-Setup, so dass ich in der Lage, auf spark-csv von Python-Editor direkt zugreifen kann.

Antwort

23

Zu der Zeit, als ich Funken-csv verwendete, musste ich auch commons-csv Glas herunterladen (nicht sicher, dass es noch relevant ist). Beide Gläser befanden sich im Funkenverteilungsordner.

  1. ich heruntergeladen die Gläser wie folgt:

    wget http://search.maven.org/remotecontent?filepath=org/apache/commons/commons-csv/1.1/commons-csv-1.1.jar -O commons-csv-1.1.jar<br/>  
    wget http://search.maven.org/remotecontent?filepath=com/databricks/spark-csv_2.10/1.0.0/spark-csv_2.10-1.0.0.jar -O spark-csv_2.10-1.0.0.jar 
    
  2. dann den Python Funken Shell mit den Argumenten gestartet:

    ./bin/pyspark --jars "spark-csv_2.10-1.0.0.jar,commons-csv-1.1.jar" 
    
  3. und einen Funken Datenrahmen aus einer CSV-Datei lesen:

    from pyspark.sql import SQLContext<br/> 
    sqlContext = SQLContext(sc)<br/> 
    df = sqlContext.load(source="com.databricks.spark.csv", path = "/path/to/you/file.csv")<br/> 
    df.show() 
    
+0

Wo in Ihren Funken Distro haben Sie diese Gläser platzieren? War es $ SPARK_HOME/lib? – Raj

15

Statt die Gläser in einem bestimmten Ordner zu platzieren eine einfache Lösung wäre es, die pyspark Schale mit den folgenden Argumenten zu starten:

bin/pyspark --packages com.databricks:spark-csv_2.10:1.0.3 

Dadurch werden die erforderlichen Funken csv Gläser automatisch geladen werden.

Dann gehen Sie wie folgt die CSV-Datei zu lesen:

from pyspark.sql import SQLContext 
sqlContext = SQLContext(sc) 
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true').load('file.csv') 
df.show() 
+2

Wie würde ich Ihre Antwort ändern, wenn ich die Konfigurationsparameter von IPython mit 'SparkConf(). Set (" Schlüssel "," Wert ")' vor dem Erstellen des Spark-Kontext? Ich sehe keinen "packages" -Schlüssel und die Einstellung "spark.jars" auf einen Pfad, der den heruntergeladenen Jar enthält, hat nicht funktioniert. – dnlbrky

+0

gibt es eine Möglichkeit zu tun, was @dnlbrky will? – Paul

+0

Wenn der Funkenkontext bereits erstellt wurde, können Sie wahrscheinlich die meisten Parameter nicht ändern. – Tagar

18

Eine weitere Möglichkeit des folgend in den Funken defaults.conf hinzuzufügen ist:

spark.jars.packages com.databricks:spark-csv_2.11:1.2.0 
+0

arbeitete wie Charme !! –

0

Im Folgenden Befehl half mir -: Mit Scala Version 2.10

/opt/mapr/spark/spark-1.5.2/bin/spark-shell --master local[*] --packages com.databricks:spark-csv_2.10:1.4.0 

Hat unter Abhängigkeiten -:

com.databricks#spark-csv_2.10;1.4.0!spark-csv_2.10.jar (2043ms) 
org.apache.commons#commons-csv;1.1!commons-csv.jar (419ms) 
com.univocity#univocity-parsers;1.5.1!univocity-parsers.jar (1481ms) 
2

Vorausgesetzt, dass die Sitzung/Kontext wurde noch nicht erstellt:

import os 

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