Scala 使用Spark列出Hadoop HDFS目录中的所有文件?
我想循环遍历Hadoop目录中的所有文本文件,并计算“error”一词的所有出现次数。有没有办法使用ApacheSpark Scala API在目录中列出所有文件 从给定情况来看,spark上下文似乎只通过以下方式单独访问文件:Scala 使用Spark列出Hadoop HDFS目录中的所有文件?,scala,apache-spark,hadoop,Scala,Apache Spark,Hadoop,我想循环遍历Hadoop目录中的所有文本文件,并计算“error”一词的所有出现次数。有没有办法使用ApacheSpark Scala API在目录中列出所有文件 从给定情况来看,spark上下文似乎只通过以下方式单独访问文件: val file = spark.textFile("hdfs://target_load_file.txt") 在我的问题中,我事先不知道HDFS文件夹中有多少文件,也不知道文件名。查看了,但找不到此类功能。您可以使用通配符: val errorCount = sc
val file = spark.textFile("hdfs://target_load_file.txt")
在我的问题中,我事先不知道HDFS文件夹中有多少文件,也不知道文件名。查看了,但找不到此类功能。您可以使用通配符:
val errorCount = sc.textFile("hdfs://some-directory/*")
.flatMap(_.split(" ")).filter(_ == "error").count
对于本地安装,(可以通过阅读/etc/hadoop/core.xml
找到hdfs默认路径fs.defaultFS
):
比如说,
import org.apache.hadoop.fs.{FileSystem, Path}
val conf = sc.hadoopConfiguration
conf.set("fs.defaultFS", "hdfs://localhost:9000")
val hdfs: org.apache.hadoop.fs.FileSystem = org.apache.hadoop.fs.FileSystem.get(conf)
val fileStatus = hdfs.listStatus(new Path("hdfs://localhost:9000/foldername/"))
val fileList = fileStatus.map(x => x.getPath.toString)
fileList.foreach(println)
如果我想报告发生错误的文件名,该怎么办?使用
sc.wholeTextFiles
。关于这个问题,请参阅。
import org.apache.hadoop.fs.{FileSystem, Path}
val conf = sc.hadoopConfiguration
conf.set("fs.defaultFS", "hdfs://localhost:9000")
val hdfs: org.apache.hadoop.fs.FileSystem = org.apache.hadoop.fs.FileSystem.get(conf)
val fileStatus = hdfs.listStatus(new Path("hdfs://localhost:9000/foldername/"))
val fileList = fileStatus.map(x => x.getPath.toString)
fileList.foreach(println)