猿问

使用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>:12


scala> myRdd.count

java.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来解决问题。


qq_遁去的一_1
浏览 1182回答 3
3回答

当年话下

确认这与针对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>:21scala> lyrics.countres1: 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

尚方宝剑之说

我不得不将hadoop下载中的jar文件复制到$SPARK_HOME/jars目录中。使用该--jars标志或该--packages标志进行火花提交不起作用。细节:火花2.3.0Hadoop下载为2.7.6复制的两个jar文件来自&nbsp;(hadoop dir)/share/hadoop/tools/lib/aws-java-sdk-1.7.4.jarhadoop-aws-2.7.6.jar
随时随地看视频慕课网APP
我要回答