2017-04-24 14 views
0

私はAWS上でspark 2.1.0を使用してemr-5.3.1を実行しています。AWS EMR上のSpark 2.1.0でのAWS-SDKアライメントエラー?

私は私のJAR(FATのJAR)私は、次のエラーを取得していて、スパークタスクを提出しています:

user class threw exception: java.lang.NoSuchMethodError: com.amazonaws.auth.DefaultAWSCredentialsProviderChain.getInstance()Lcom/amazonaws/auth/DefaultAWSCredentialsProviderChain;

私は、私は別のAWS-SDKを使用して、私のjarファイルを構築しているため、それが推測することができますSparkにインストールされているバージョン2.1.0

  1. EMRのSpark 2.1.0には、適切なAWS_SDKバージョンがインストールされていますか?
  2. 提出されたsparkタスクを強制的にjarで実行する方法はありますか?

答えて

0

...Spark-submit ignores the jars submitted by the user and uses the jars under /usr/share/aws/aws-java-sdk/ which for EMR 5.4 are of version 1.10.75.1. spark-submit has a parameter which can override the server jars with the user jars, however this can cause other issues... (StayerX)

オリジナルのポストであることを見た:https://github.com/aws/aws-sdk-java/issues/1094

1

私はPOMでこの依存関係を持つ最新のEMR画像にスパーク2.1.0を実行している:

 <dependency> 
      <groupId>com.amazonaws</groupId> 
      <artifactId>aws-java-sdk</artifactId> 
      <version>1.10.75</version> 
      <scope>compile</scope> 
      <exclusions> 
       <exclusion> 
        <artifactId>jackson-databind</artifactId> 
        <groupId>com.fasterxml.jackson.core</groupId> 
       </exclusion> 
       <exclusion> 
        <artifactId>jackson-dataformat-cbor</artifactId> 
        <groupId>com.fasterxml.jackson.dataformat</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

あなたのjarファイルを実行するために火花を強制する方法は、「コンパイル」スコープを使用することです上記のように「提供されていません」。

ところで、あなたは、EMRのマスターにSSHおよび実行することができます。

sudo find/-name *aws-sdk*jar 

は、私は今それをやったし、バージョンは1.10.77

+0

(1) 'sudo find/-name * aws-sdk * jar'は何も返されませんでした。 (2)あなたはこのPOMファイルをどこに供給しているのか分かりませんが、spark-submitのその部分ですか?コンパイル? –

+1

申し訳ありませんあなたの質問に気づいたばかりです... (1)私の悪い.. \ aws-java-sdk \ * jar (2)pomファイルがコンパイルされています。代わりにいくつかのsbtを使用してください。 @RoeeGavirel –

関連する問題