2015-11-06 52 views
4

brew install apache-spark,sc.textFile("s3n://...")spark-shell後失敗。在通過使用spark-ec2啓動的EC2機器訪問spark-shell時,情況並非如此。 homebrew公式似乎是使用足夠晚的Hadoop版本構建的,無論是否首先運行brew install hadoop,都會引發此錯誤。brew安裝apache-spark無法訪問s3文件

我怎樣才能安裝火花與自制,使它能夠讀取s3n://文件?

+0

這可能是Hadoop客戶端版本錯誤。你可能想看看這個。 – eliasah

回答

3

缺省情況下,Hadoop 2.6中未啓用S3文件系統。 因此,使用hadoop2.6構建的Spark版本也沒有任何基於S3的fs可用。可能的解決方案:

  • 解決方法1.用Hadoop 2.4內置使用星火(只需更改文件名以「火花1.5.1彬hadoop2.4.tgz」和更新SHA256)和S3N:// FS將工作。

  • 解決方案2.啓用s3n://文件系統。 當您啓動spark-shell時,指定--conf spark.hadoop.fs.s3n.impl=org.apache.hadoop.fs.s3native.NativeS3FileSystem選項。其中<path>hadoop-awsaws-java-sdk-1.7.4guava-11.0.2罐子的目錄--conf spark.driver.extraClassPath=<path>/* --conf spark.executor.extraClassPath=<path>/*

    你也應該設置路徑所需的庫。

  • 解決方案3.使用更新的s3a://文件系統。它默認啓用。所需庫的路徑也應該設置。

注1:選項也可以在CONF /火花defaults.conf文件中設置,所以你不需要每次都爲他們提供--conf,閱讀guide

注2:您可以指向<path>在Hadoop中分享/ Hadoop的/工具/ lib目錄2.6+分佈(S3A需要從Hadoop的2.7+庫)或獲得所需的庫從Maven的中央(123) 。

注3:爲環境變量中的s3n提供憑證,~/.aws/config文件或--conf spark.hadoop.fs.s3n.awsAccessKeyId= --conf spark.hadoop.fs.s3n.awsSecretAccessKey=

s3a需要--conf spark.hadoop.fs.s3a.access.key= --conf spark.hadoop.fs.s3a.secret.key=選項(沒有環境變量或.aws文件)。

注4: S3://可以被設置爲別名或者用於S3N(--conf spark.hadoop.fs.s3.impl=org.apache.hadoop.fs.s3native.NativeS3FileSystem)或S3A(--conf spark.hadoop.fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem)。

+0

@llya真棒回答。一些後續q's:re:解決方案1:我需要更改'apache-spark.rb'中的'sha256'和'version'字段嗎?那麼這個文件會是什麼樣子呢?回覆:注意3和4:如何配置,這是默認行爲,並且不需要每次指定?謝謝! –

+0

是的,你需要改變sha256(閱讀[這個評論](https://github.com/Homebrew/homebrew/blob/6e5d803878b2ea35b2243ce4fa1192e7d3b5e8a8/Library/Homebrew/formula.rb#L1604-L1607)),版本將是相同的。更新了關於設置默認行爲的註釋1。 – Ilya

+1

很好的答案!對我來說,它使用'--jars'而不是'--conf':'spark-shell --conf spark.hadoop.fs.s3n.impl = org.apache.hadoop.fs.s3native.NativeS3FileSystem --jars = /usr/local/Cellar/hadoop/2.7.2/libexec/share/hadoop/tools/lib/hadoop-aws-2.7.2.jar,/usr/local/Cellar/hadoop/2.7.2/libexec/share/ Hadoop的/ tools/lib目錄/番石榴11.0.2.jar,在/ usr /本地/庫/ Hadoop的/ 2.7.2/libexec目錄/股/ Hadoop的/ tools/lib目錄/ AWS-Java的SDK-1.7.4.jar' –