web-dev-qa-db-de.com

Hinzufügen neuer Bibliotheken wie spark-csv in der vorgefertigten Version von Apache Spark

Ich habe die Spark-csv erstellt und kann sie von der pyspark-Shell mit dem folgenden Befehl verwenden

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 meinem vorgefertigten Spark-Setup ablegen, damit ich spark-csv direkt vom Python-Editor aus zugreifen kann.

25

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

  1. Ich habe die Gläser wie folgt heruntergeladen:

    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 startete die Python-Funken-Shell mit den Argumenten:

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

    from pyspark.sql import SQLContext
    sqlContext = SQLContext(sc)
    df = sqlContext.load(source="com.databricks.spark.csv", path = "/path/to/you/file.csv")
    df.show()
    
25
Yannick Marcon

Eine weitere Option besteht darin, Ihrer spark-defaults.conf Folgendes hinzuzufügen:

spark.jars.packages com.databricks:spark-csv_2.11:1.2.0
20
kentt

Anstatt die Jars in einem bestimmten Ordner zu platzieren, wäre ein einfaches Update die Pyspark-Shell mit den folgenden Argumenten zu starten:

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

Dadurch werden automatisch die erforderlichen Spark-CSV-Gläser geladen.

Gehen Sie dann folgendermaßen vor, um 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()
16
Jimmy

Angenommen, die Sitzung/der Kontext wurde noch nicht erstellt:

import os

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

Der folgende Befehl hat mir geholfen -: Mit Scala 2.10 Version

/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)
0
user3815062

finde zuerst den Weg des Funkens heraus. zum Beispiel für Pyspark

    which pyspark

der Pfad wird beispielsweise wie folgt zurückgegeben: .- /home/ubuntu/bin/pyspark

führen Sie dann diesen Befehl aus, indem Sie den Pfad gemäß Ihrem Funkenpfad ändern .__

    /home/ubuntu/bin/pyspark --packages com.databricks:spark-csv_2.10:1.0.3
0
Shubham Sinha