Wal*_*Cat 5 homebrew hadoop amazon-s3 apache-spark
之后brew install apache-spark,sc.textFile("s3n://...")在spark-shell失败java.io.IOException: No FileSystem for scheme: s3n.spark-shell通过推出的EC2机器访问不是这种情况spark-ec2.该自制配方似乎建立使用Hadoop的足够后期版本,并抛出这个错误是否brew install hadoop已经先运行.
如何使用自制软件安装spark以便能够读取s3n://文件?
默认情况下,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 即可工作。
解决方案 2. 启用 s3n:// 文件系统。--conf spark.hadoop.fs.s3n.impl=org.apache.hadoop.fs.s3native.NativeS3FileSystem启动 Spark-Shell 时指定该选项。
此外,您还应该设置所需库的路径:带有,和jar 的目录在--conf spark.driver.extraClassPath=<path>/* --conf spark.executor.extraClassPath=<path>/*哪里。<path>hadoop-awsaws-java-sdk-1.7.4guava-11.0.2
解决方案 3. 使用较新的 s3a:// 文件系统。默认情况下它是启用的。还应该设置所需库的路径。
注意1:选项也可以在conf/spark-defaults.conf文件中设置,这样你就不需要每次都提供它们--conf,请阅读指南。
注2:您可以指向Hadoop 2.6+ 发行版中的 share/hadoop/ tools /lib 目录(s3a 需要来自 Hadoop 2.7+的库)或从 Maven Central 获取所需的<path>库(1、2、3)。
注 3:在环境变量、~/.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) 的别名。