使用 sc.textFile (“s3n://...”) 从 S3 生成读取文件
尝试使用 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: No FileSystem for scheme: s3n 错误发生在:
- 开发机器上的 Spark 1.31 或 1.40(无 Hadoop 库)
- 从 Hortonworks 沙盒 HDP v2.2.4 (Hadoop 2.60) 运行,该版本开箱即用地集成了 Spark 1.2.1
- 使用 s3:// 或 s3n:// 方案
此错误的原因是什么?缺少依赖项、缺少配置或误用 ?sc.textFile()
或者这可能是由于一个影响特定于Hadoop 2.60的Spark构建的错误,正如这篇文章所暗示的那样。我将尝试Spark for Hadoop 2.40,看看这是否能解决问题。