2016-02-25 22 views
5

Sto utilizzando spark-shell e non riesco a prelevare esterno jars. Corro spark in EMR.Scintilla EMR non raccogli vasi

ho eseguire il seguente comando:

spark-shell --jars s3://play/emr/release/1.0/code.jar 

ottengo il seguente errore:

OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0 Warning: Skip remote jar s3://play/emr/release/1.0/code.jar

Grazie in anticipo.

risposta

3

Questa è una limitazione di Apache Spark stessa, non specificamente di Spark su EMR. Quando si esegue Spark nella modalità di distribuzione client (tutte le shell interattive come spark-shell o pyspark o spark-submit senza --deploy-mode cluster o --master yarn-cluster), sono consentiti solo percorsi jar locali.

Il motivo è che, per consentire a Spark di scaricare questo jar remoto, deve già essere in esecuzione codice Java, a quel punto è troppo tardi per aggiungere il jar al proprio classpath.

La soluzione alternativa consiste nel scaricare il jar localmente (utilizzando la CLI di AWS S3), quindi specificare il percorso locale durante l'esecuzione di spark-shell o spark-submit.

2

È possibile farlo con una riga di comando di shell scintilla sulla scatola EMR stessa:

spark-submit --verbose --deploy-mode cluster --class com.your.package.and.Class s3://bucket/path/to/thejar.jar 10

Si può anche chiamare questo comando utilizzando la Java EMR Client Library AWS o AWS CLI. La chiave è quella di utilizzare: '--deploy-modalità cluster'

+0

Per qualche motivo questo non funziona per me. Sono su EMR-5.6.0/Spark-2.1.1. Su quale versione di EMR/Spark hai fatto questo lavoro per te? –

0

Ha avuto lo stesso problema, è possibile aggiungere "filati --master grappolo --deploy-mode" args e vi consente di eseguire vasetti S3 remoto

+0

Non mi sembrava necessario la parte '--master yarn' – swdev