brew安装apache-spark无法访问s3文件

时间:2015-11-06 19:17:29

标签: hadoop amazon-s3 apache-spark homebrew

brew install apache-spark后,sc.textFile("s3n://...")中的spark-shelljava.io.IOException: No FileSystem for scheme: s3n失败。 spark-shell通过使用spark-ec2启动的EC2计算机访问的情况并非如此。 homebrew公式似乎是使用足够晚的Hadoop版本构建的,无论brew install hadoop是否已先运行,都会抛出此错误。

如何使用自制软件安装spark,以便能够阅读s3n://个文件?

1 个答案:

答案 0 :(得分:3)

默认情况下,Hadoop 2.6中未启用S3文件系统。 因此,使用hadoop2.6构建的Spark版本也没有任何基于S3的fs。可能的解决方案:

  • 解决方案1.使用使用Hadoop 2.4构建的Spark(只需将文件名更改为“spark-1.5.1-bin-hadoop2.4.tgz”并更新sha256)和s3n:// fs将起作用。< / p>

  • 解决方案2.启用s3n:// filesystem。 启动spark-shell时指定--conf spark.hadoop.fs.s3n.impl=org.apache.hadoop.fs.s3native.NativeS3FileSystem选项。

    此外,您应该设置所需库的路径:--conf spark.driver.extraClassPath=<path>/* --conf spark.executor.extraClassPath=<path>/*其中<path>是包含hadoop-awsaws-java-sdk-1.7.4guava-11.0.2 jar的目录。

  • 解决方案3.使用较新的s3a://文件系统。它默认启用。还应设置所需库的路径。

注1:也可以在conf / spark-defaults.conf文件中设置选项,这样您就不需要每次都使用--conf提供它们,请阅读{{3 }}

注2:您可以在Hadoop 2.6+发行版中指向<path>到share / hadoop / tools / lib目录(s3a需要Hadoop 2.7+中的库)或从Maven获取所需的库中心(guide12)。

注3:在环境变量~/.aws/config文件或--conf spark.hadoop.fs.s3n.awsAccessKeyId= --conf spark.hadoop.fs.s3n.awsSecretAccessKey=中提供s3n的凭据。

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)的别名。