2016-02-25 5 views
5

私はspark-shellを使用しており、外部jarsを取り出すことができません。私はsparkをEMRで実行します。私は次のエラーを取得するEMRスパークシェルが瓶を拾わない

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

:事前に

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

おかげ

は、私は、次のコマンドを実行します。

答えて

3

これはApache Spark自体の制限です。具体的にはSpark on EMRではありません。クライアント展開モード(すべての対話シェル(spark-shellまたはpyspark、または​​なし、--deploy-mode clusterまたは--master yarn-clusterなし)でSparkを実行する場合、ローカルjarパスのみが許可されます。

これは、Sparkがこのリモートjarをダウンロードするためには、すでにJavaコードを実行している必要があります。その時点で、独自のクラスパスにjarファイルを追加することができません。

回避策は、ローカルで(AWS S3 CLIを使用して)jarをダウンロードし、spark-shellまたはspark-submitを実行するときにローカルパスを指定することです。

2

あなたはEMRボックス自体の火花シェルコマンドラインでこれを行うことができます。

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

あなたはまた、AWSのJava EMRクライアントライブラリやAWS CLIを使用してこのコマンドを呼び出すことができます。

+0

何らかの理由でこれは私のために働いていません。私はEMR-5.6.0/Spark-2.1.1です。 EMR/Sparkのどのバージョンでこれが機能しましたか? –

0

は、同じ問題を持っていたあなたは「--master糸--deployモードクラスタ」引数を追加することができますし、それはあなたがリモートで

をS3のjarファイルを実行することができます「--deployモードのクラスタを」:キーが使用することです
+0

私は '--master yarn'の部分が必要ないようでした – swdev

関連する問題