2015-10-06 15 views
11

ich CSV-Dateien in Zeppelin lesen wanna und möchte databricks' Funken csv-Paket verwenden: https://github.com/databricks/spark-csvLese csv-Dateien in zeppelin mit Funken csv

In den Funken Schal, kann ich Funken csv mit

spark-shell --packages com.databricks:spark-csv_2.11:1.2.0 

Aber wie sage ich Zeppelin, dieses Paket zu verwenden?

Vielen Dank im Voraus!

+2

https://zeppelin.incubator.apache.org/docs/interpreter/spark.html#dependencyloading – zero323

+0

ok, fügte hinzu:% dep --packages com.databricks: Funken csv_2.11: 1.2.0 zu einem zeppeling Notebook, aber gab: "Muss vor der Initialisierung von SparkInterpreter (% funken) verwendet werden". Habe nicht% Funke im Notebook verwendet, aber – fabsta

+0

Wie wäre es mit% pyspark oder% sql? – zero323

Antwort

13

Sie müssen lesen Sie die spark-Pakete Repository Zeppelin hinzufügen, bevor Sie% dep auf Funkenpakete nutzen können.

%dep 
z.reset() 
z.addRepo("Spark Packages Repo").url("http://dl.bintray.com/spark-packages/maven") 
z.load("com.databricks:spark-csv_2.10:1.2.0") 

Alternativ kann, wenn dies etwas, das Sie in allen Notebooks verfügbar sein sollen, können Sie die --packages Option zum Funken einreichen Befehlseinstellung in den in Zeppelin Config Dolmetscher hinzufügen und dann den Interpreter neu starten. Dies sollte einen Zusammenhang mit dem Paket beginnt bereits gemäß der Funken Shell Methode geladen.

+0

Danke, Simon! Das hat gut funktioniert. – fabsta

+0

Einfach, fantastisch – Anselmo

+1

% dep ist jetzt bereinigt (0.6.1) ... siehe Pauls Antwort (GUI verwenden) – Pete

4

BEGIN-EDIT

% dep wird in Zeppelin 0.6.0 veraltet. Siehe Paul-Armand Verhaegen Antwort.

Bitte lesen Sie weiter in dieser Antwort, wenn Sie zeppelin verwenden älter als 0.6.0

END-EDIT

Sie den Funken-csv laden Paket dep-Interpreter%.

wie

%dep 
z.reset() 

// Add spark-csv package 
z.load("com.databricks:spark-csv_2.10:1.2.0") 

Siehe Abhängigkeit Loading Abschnitt in https://zeppelin.incubator.apache.org/docs/interpreter/spark.html

Wenn Sie bereits Spark-Kontext, schnelle Lösung initialisiert haben, ist zeppelin neu zu starten und zeppelin Absatz mit obigem Code zuerst ausführen und dann führen Sie Ihre Funken Code die CSV-Datei

+0

Wenn ich das versuche, bekomme ich "Fehler: nicht gefunden: Wert% % dep". Ideen? – fabsta

+0

Nein, aber welche Version von Zeppelin benutzt du? Ich habe es nur aus der Quelle gebaut und alles ist in Ordnung – sag

+1

Wie Pete oben erwähnt: dep ist jetzt bereinigt (0.6.1) ... siehe Pauls Antwort (verwenden Sie die GUI) – conradlee

0

, wenn Sie in conf definieren/zeppelin-env.sh

export SPARK_HOME=<PATH_TO_SPARK_DIST> 

Zeppelin wird dann in $ SPARK_HOME aussehen/conf/Funken defaults.conf und Sie können Gläser dort definieren:

spark.jars.packages    com.databricks:spark-csv_2.10:1.4.0,org.postgresql:postgresql:9.3-1102-jdbc41 
schauen

dann bei

http: // zepplin_url: 4040/Umwelt/für die folgenden:

spark.jars file:/root/.ivy2/jars/com.databricks_spark-csv_2.10-1.4.0.jar,file:/root/.ivy2/jars/org.postgresql_postgresql-9.3-1102-jdbc41.jar

spark.jars.packages com.databricks:spark-csv_2.10:1.4.0,org.postgresql:postgresql:9.3-1102-jdbc41

Weitere Referenz: https://zeppelin.incubator.apache.org/docs/0.5.6-incubating/interpreter/spark.html

7
  1. Zum Interpreter Registerkarte Repository Informationen klicken, fügen Sie ein Repo und stellen Sie die URL zu http://dl.bintray.com/spark-packages/maven
  2. Blättern Sie zum Funken Interpreter Absatz und klicken Sie auf Bearbeiten, blättern ein wenig nach unten auf das Artefakt Feld und fügen Sie „com.databricks: Funken csv_2.10: 1.2.. 0" oder eine neuere Version neu starten Sie dann den Dolmetscher, wenn Sie gefragt
  3. Im Notebook, verwenden Sie so etwas wie:.

    import org.apache.spark.sql.SQLContext 
    
    val sqlContext = new SQLContext(sc) 
    val df = sqlContext.read 
        .format("com.databricks.spark.csv") 
        .option("header", "true") // Use first line of all files as header 
        .option("inferSchema", "true") // Automatically infer data types 
        .load("my_data.txt") 
    

Update:

In der Benutzer-Mailingliste Zeppelin, es ist jetzt (Nov. 2016) von Moon Soo Lee (Schöpfer von Apache Zeppelin) angegeben, die Benutzer bevorzugen,% dep zu behalten, wie es erlaubt:

  • Selbst-Dokumentieren Anforderungen an die Bibliothek im Notebook;
  • per Hinweis (und möglicherweise pro Benutzer) Bibliothek laden.

Die Tendenz ist jetzt% dep zu halten, so sollte es zu diesem Zeitpunkt nicht in Betracht gezogen werden abgeschrieben.

+0

Ich bin mir nicht sicher, was Sie mit "Erstellen eines Repos" meinen. In meinem Zeppelin Interpreter Tab kann ich eine komplett neue Interpreterumgebung erstellen. Außerdem habe ich diese Spark-Packages-URL gegen das Feld 'zeppelin.dep.additionalRemoteRepository', also wie soll ich das CSV-Paket genau laden? –

+0

@martin Erstellen Sie ein Repo (Repository), indem Sie auf das Zahnradsymbol links neben der Schaltfläche "Erstellen" klicken (um eine neue Interpreterumgebung zu erstellen, die nicht Ihren Vorstellungen entspricht). Dies sollte die verfügbare Repository-Liste erweitern und einen "+" - Button anzeigen. Klicken Sie auf die Schaltfläche "+" und fügen Sie http://dl.bintray.com/spark-packages/maven als URL hinzu. Sie können dann nur die Schritte 2 und 3 ausführen. Wie bei Ihrer anderen Frage ist es normal, diese URL in zeppelin.dep.additionalRemoteRepository zu haben. Dies ist eine Abhängigkeit, die jetzt behoben werden kann, da der externe Repo in Schritt 1 hinzugefügt wird. –

0

Eine andere Lösung:

In conf/zeppelin-env.sh (in/etc/für mich zeppelin) fügen Sie die Zeile:

export SPARK_SUBMIT_OPTIONS="--packages com.databricks:spark-csv_2.10:1.2.0" 

Dann starten Sie den Dienst.

Verwandte Themen