3 回答
TA贡献1890条经验 获得超9个赞
确认这与针对Hadoop 2.60的Spark构建有关。刚刚安装了Spark 1.4.0“为Hadoop 2.4和更高版本预构建”(而不是Hadoop 2.6)。代码现在可以正常工作了。
sc.textFile("s3n://bucketname/Filename") 现在引发另一个错误:
java.lang.IllegalArgumentException: AWS Access Key ID and Secret Access Key must be specified as the username or password (respectively) of a s3n URL, or by setting the fs.s3n.awsAccessKeyId or fs.s3n.awsSecretAccessKey properties (respectively).
以下代码使用S3 URL格式显示Spark可以读取S3文件。使用开发机(无Hadoop库)。
scala> val lyrics = sc.textFile("s3n://MyAccessKeyID:MySecretKey@zpub01/SafeAndSound_Lyrics.txt")
lyrics: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[3] at textFile at <console>:21
scala> lyrics.count
res1: Long = 9
甚至更好:如果AWS密钥具有正向“ /”,则上面在S3N URI中内嵌AWS凭证的代码将中断。在SparkContext中配置AWS凭证将对其进行修复。无论S3文件是公共文件还是私有文件,代码都可以工作。
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "BLABLA")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "....") // can contain "/"
val myRDD = sc.textFile("s3n://myBucket/MyFilePattern")
myRDD.count
TA贡献1788条经验 获得超4个赞
我不得不将hadoop下载中的jar文件复制到$SPARK_HOME/jars
目录中。使用该--jars
标志或该--packages
标志进行火花提交不起作用。
细节:
火花2.3.0
Hadoop下载为2.7.6
复制的两个jar文件来自
(hadoop dir)/share/hadoop/tools/lib/
aws-java-sdk-1.7.4.jar
hadoop-aws-2.7.6.jar
添加回答
举报