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
添加回答
舉報