2015-10-06 19 views
11

Voglio leggere i file CSV in Zeppelin e vorrei usare il pacchetto scintilla csv databricks': https://github.com/databricks/spark-csvfile csv di lettura in Zeppelin utilizzando scintilla csv

Nella scintilla scocca, posso usare scintilla csv con

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

Ma come faccio a dire a Zeppelin di utilizzare quel pacchetto?

Grazie in anticipo!

+2

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

+0

ok, aggiunto:% dep - pacchetti com.databricks: spark-csv_2.11: 1.2.0 a uno zeppeling notebook, ma ha dato: "Deve essere usato prima di SparkInterpreter (% spark) inizializzato". Tuttavia, non hai usato% spark nel notebook. – fabsta

+0

Che ne dici di% pyspark o% sql? – zero323

risposta

13

È necessario aggiungere il repository dei pacchetti Spark a Zeppelin prima di poter utilizzare% dep su pacchetti spark.

%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") 

In alternativa, se questo è qualcosa che si desidera disponibili in tutti i vostri notebook, è possibile aggiungere l'opzione --packages all'impostazione dei comandi scintilla presentare negli interpreti config nella Zeppelin, e quindi riavviare l'interprete. Questo dovrebbe avviare un contesto con il pacchetto già caricato secondo il metodo spark-shell.

+0

Grazie, Simon! Ha funzionato bene – fabsta

+0

Semplice, fantastico – Anselmo

+1

% dep è ora deprivato (0.6.1) ... vedi la risposta di Paolo (usa la GUI) – Pete

4

BEGIN-EDIT

% dep è deprecato in Zeppelin 0.6.0. Si prega di fare riferimento alla risposta di Paul-Armand Verhaegen.

Si prega di leggere di più in questa risposta, se si utilizza zeppelin di età superiore a 0.6.0

FINE-EDIT

È possibile caricare il pacchetto scintilla csv utilizzando% interprete dep.

come,

%dep 
z.reset() 

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

Vedere Dipendenza sezione Caricamento in https://zeppelin.incubator.apache.org/docs/interpreter/spark.html

Se hai già inizializzato Spark contesto, soluzione rapida è quella di riavviare Zeppelin ed eseguire il paragrafo zeppelin con codice di cui sopra e poi eseguire il vostro codice spark per leggere il file CSV

+0

Quando provo, ottengo "errore: non trovato: valore% % dep". Idee? – fabsta

+0

No, ma quale versione di zeppelin stai usando? L'ho appena creato dal sorgente e tutto è a posto – sag

+1

Come già detto da Pete: il dep è ora deprivato (0.6.1) ... vedi la risposta di Paolo (usa la GUI) – conradlee

0

se si definisce in conf/zeppelin-env.sh

export SPARK_HOME=<PATH_TO_SPARK_DIST> 

Zeppelin sarà quindi cercare nella $ SPARK_HOME/conf/scintilla defaults.conf ed è possibile definire vasetti c'è:

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

allora un'occhiata a

http: // zepplin_url: 4040/ambiente/per i seguenti:

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

Per maggiori riferimento: https://zeppelin.incubator.apache.org/docs/0.5.6-incubating/interpreter/spark.html

7
  1. Vai alla scheda interprete, fare clic su repository di informazioni, aggiungere un repo e impostare l'URL per http://dl.bintray.com/spark-packages/maven
  2. Scorrere verso il basso al paragrafo scintilla interprete e cliccare su Modifica, scorrere un po 'al campo artefatto e aggiungi "com.databricks: spark-csv_2.10: 1.2.. 0" o una versione più recente, quindi riavviare l'interprete quando gli viene chiesto
  3. nel notebook, usare qualcosa come:.

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

Aggiornamento:

Nel sulla mailing list di Zeppelin, si è ora (novembre 2016) dichiarato da Moon Soo Lee (creatore di Apache Zeppelin) che gli utenti preferiscono mantenere% dep in quanto consente di:

  • autocerume esigenze di libreria nel notebook;
  • per caricamento della nota (e possibile per utente).

La tendenza è ora di mantenere% dep, quindi non dovrebbe essere considerato ammortizzato in questo momento.

+0

Non sono sicuro di cosa intenda con "creare un repository". Nella mia scheda interprete di Zeppelin posso creare un ambiente completamente nuovo per interpreti. Inoltre, ho l'URL dei pacchetti Spark sul campo 'zeppelin.dep.additionalRemoteRepository', quindi come faccio a caricare esattamente il pacchetto CSV? –

+0

@martin Creare un repository (repository) facendo clic sull'icona dell'ingranaggio a sinistra del pulsante "create" (per creare un ambiente di interprete completamente nuovo che non è quello che si desidera). Questo dovrebbe espandere l'elenco di repository disponibile e rivelare un pulsante "+". Fai clic sul pulsante "+" e aggiungi http://dl.bintray.com/spark-packages/maven come URL. È quindi possibile semplicemente seguire i passaggi 2 e 3. Come per l'altra domanda, è normale avere quell'URL in zeppelin.dep.additionalRemoteRepository. Questa dipendenza può ora essere risolta poiché il repository esterno viene aggiunto nel passaggio 1. –

0

Un'altra soluzione:

In conf/zeppelin-env.sh (che si trova in/etc/zeppelin per me) aggiungere la linea:

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

quindi avviare il servizio.

Problemi correlati