brew install apache-spark
,sc.textFile("s3n://...")
在spark-shell
後失敗。在通過使用spark-ec2
啓動的EC2機器訪問spark-shell
時,情況並非如此。 homebrew公式似乎是使用足夠晚的Hadoop版本構建的,無論是否首先運行brew install hadoop
,都會引發此錯誤。brew安裝apache-spark無法訪問s3文件
我怎樣才能安裝火花與自制,使它能夠讀取s3n://
文件?
brew install apache-spark
,sc.textFile("s3n://...")
在spark-shell
後失敗。在通過使用spark-ec2
啓動的EC2機器訪問spark-shell
時,情況並非如此。 homebrew公式似乎是使用足夠晚的Hadoop版本構建的,無論是否首先運行brew install hadoop
,都會引發此錯誤。brew安裝apache-spark無法訪問s3文件
我怎樣才能安裝火花與自制,使它能夠讀取s3n://
文件?
缺省情況下,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-aws
,aws-java-sdk-1.7.4
和guava-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的中央(1,2,3) 。
注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
)。
@llya真棒回答。一些後續q's:re:解決方案1:我需要更改'apache-spark.rb'中的'sha256'和'version'字段嗎?那麼這個文件會是什麼樣子呢?回覆:注意3和4:如何配置,這是默認行爲,並且不需要每次指定?謝謝! –
是的,你需要改變sha256(閱讀[這個評論](https://github.com/Homebrew/homebrew/blob/6e5d803878b2ea35b2243ce4fa1192e7d3b5e8a8/Library/Homebrew/formula.rb#L1604-L1607)),版本將是相同的。更新了關於設置默認行爲的註釋1。 – Ilya
很好的答案!對我來說,它使用'--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' –
這可能是Hadoop客戶端版本錯誤。你可能想看看這個。 – eliasah