2016-09-02 19 views
2

"s3a://" URLプロトコルを使用して、Hadoop + Spark用の最新の優れたS3実装が呼び出されます。これは、あらかじめ設定されたAmazon EMRで効果的です。Spark + Amazon S3 "s3a://" urls

事前に構築されたspark-2.0.0-bin-hadoop2.7.tgzを使用してローカルのdevのシステム上で実行している場合しかし、私は

Caused by: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3a.S3AFileSystem not found 
    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2101) 
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2193) 
    ... 99 more 

を取得する次の私は、Hadoopの-AWSアドオンを指定して、私のスパークジョブを起動しようとした:

$SPARK_HOME/bin/spark-submit --master local \ 
    --packages org.apache.hadoop:hadoop-aws:2.7.3 \ 
    my_spark_program.py 

私は得る

:::::::::::::::::::::::::::::::::::::::::::::: 

    ::    FAILED DOWNLOADS   :: 

    ::^see resolution messages for details^:: 

    :::::::::::::::::::::::::::::::::::::::::::::: 

    :: com.google.code.findbugs#jsr305;3.0.0!jsr305.jar 

    :: org.apache.avro#avro;1.7.4!avro.jar 

    :: org.xerial.snappy#snappy-java;1.0.4.1!snappy-java.jar(bundle) 

    :::::::::::::::::::::::::::::::::::::::::::::: 

私は、一時ディレクトリにダミーbuild.sbtプロジェクトを作った基本のsbtのビルドかどうかを確認するためにこれらの3つの依存関係が正常にそれらをダウンロードすることができて、私は得た:

[error] (*:update) sbt.ResolveException: unresolved dependency: org.apache.avro#avro;1.7.4: several problems occurred while resolving dependency: org.apache.avro#avro;1.7.4 {compile=[default(compile)]}: 
[error]  org.apache.avro#avro;1.7.4!avro.pom(pom.original) origin location must be absolute: file:/Users/username/.m2/repository/org/apache/avro/avro/1.7.4/avro-1.7.4.pom 
[error]  org.apache.avro#avro;1.7.4!avro.pom(pom.original) origin location must be absolute: file:/Users/username/.m2/repository/org/apache/avro/avro/1.7.4/avro-1.7.4.pom 
[error] 
[error] unresolved dependency: com.google.code.findbugs#jsr305;3.0.0: several problems occurred while resolving dependency: com.google.code.findbugs#jsr305;3.0.0 {compile=[default(compile)]}: 
[error]  com.google.code.findbugs#jsr305;3.0.0!jsr305.pom(pom.original) origin location must be absolute: file:/Users/username/.m2/repository/com/google/code/findbugs/jsr305/3.0.0/jsr305-3.0.0.pom 
[error]  com.google.code.findbugs#jsr305;3.0.0!jsr305.pom(pom.original) origin location must be absolute: file:/Users/username/.m2/repository/com/google/code/findbugs/jsr305/3.0.0/jsr305-3.0.0.pom 
[error] 
[error] unresolved dependency: org.xerial.snappy#snappy-java;1.0.4.1: several problems occurred while resolving dependency: org.xerial.snappy#snappy-java;1.0.4.1 {compile=[default(compile)]}: 
[error]  org.xerial.snappy#snappy-java;1.0.4.1!snappy-java.pom(pom.original) origin location must be absolute: file:/Users/username/.m2/repository/org/xerial/snappy/snappy-java/1.0.4.1/snappy-java-1.0.4.1.pom 
[error]  org.xerial.snappy#snappy-java;1.0.4.1!snappy-java.pom(pom.original) origin location must be absolute: file:/Users/username/.m2/repository/org/xerial/snappy/snappy-java/1.0.4.1/snappy-java-1.0.4.1.pom 
[error] Total time: 2 s, completed Sep 2, 2016 6:47:17 PM 

任意のアイデア私はこの作業を取得することができますどのように?

+0

他の依存関係をsbtに追加しようとしましたか? –

+0

空のsbtプロジェクトにエラーを引き起こし、ビルドに失敗した3つの依存関係を追加しました。なぜ他の依存関係を追加するのが有用か、有用なのでしょうか? – clay

+0

私はちょうど興味があった。明らかに、AWSのhadoopパッケージを追加すると、他のものをダウンロードする必要があると考えられます。そのため、プロジェクトで明示的に尋ねると便利です –

答えて

1

送信フラグに追加のジャーが必要なようです。 Mavenリポジトリには、現在のエラーを修正するために使用できるいくつかのJava用AWSパッケージがあります。https://mvnrepository.com/search?q=aws

私はS3Aファイルシステムエラーで頭痛を引き続き受けます。 aws-java-sdk:1.7.4 jarはSpark 2.0で動作します。

ここでさらに対話を見つけることができます。実際にはMaven AWS EC2リポジトリには実際のパッケージがあります。

https://sparkour.urizone.net/recipes/using-s3/

これを試してみてください:

spark-submit --packages com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.3 my_spark_program.py 
0

あなたがApacheのスパークを(つまり:私はEMRでビルドアマゾン船を無視しています)を使用している場合は、あなたがorg.apache.hadoop:hadoop-awsに依存関係を追加する必要があります残りのスパークが使用するHadoopとまったく同じバージョンです。これにより、S3a FSと推移的な依存関係が追加されます。 AWS SDK のバージョンは、ライブラリを構築するために使用されたものと同じでなければなりません。これは少し動いているターゲットなので、と同じでなければなりません。

参照:Apache Spark and Object Stores