亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用sc.textFile(“ s3n://…)從S3 Spark讀取文件

使用sc.textFile(“ s3n://…)從S3 Spark讀取文件

嘗試使用spark-shell讀取S3中的文件:scala> val myRdd = sc.textFile("s3n://myBucket/myFile1.log")lyrics: org.apache.spark.rdd.RDD[String] = s3n://myBucket/myFile1.log MappedRDD[55] at textFile at <console>:12scala> myRdd.countjava.io.IOException: No FileSystem for scheme: s3n    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2607)    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2614)    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:91)    ... etc ...該IOException異常:沒有文件系統的方案:S3N與發生錯誤:開發機上的Spark 1.31或1.40(無Hadoop庫)從Hortonworks Sandbox HDP v2.2.4(Hadoop 2.60)運行,該現成的集成了Spark 1.2.1使用s3://或s3n://方案此錯誤的原因是什么?缺少依存關系,缺少配置或濫用sc.textFile()?或者可能這是由于影響特定的Spark構建于Hadoop的2.60,因為這一個bug 后似乎暗示。我將嘗試使用Spark for Hadoop 2.40來解決問題。
查看完整描述

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


查看完整回答
反對 回復 2019-10-29
?
尚方寶劍之說

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


查看完整回答
反對 回復 2019-10-29
  • 3 回答
  • 0 關注
  • 1239 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號