Spark 每个文件到一个数据集行

Tim*_*Tim 2 scala apache-spark apache-spark-sql

我在一个目录中有很多文件,每个文件都包含跨越多行的文本。目前,我使用以下代码将所有这些文件读取到 spark 数据集(> 2.0)

   val ddf = spark.read.text("file:///input/*")
Run Code Online (Sandbox Code Playgroud)

但是,这会创建一个数据集,其中每一行都是一行,而不是一个文件。我希望数据集中的每行都有每个文件(作为字符串)。

如何在不迭代每个文件并将其单独读取的情况下实现这一点RDD

mrs*_*vas 6

使用wholeTextFiles()SparkContext

val rdd: RDD[(String, String)] = spark.sparkContext
                                      .wholeTextFiles("file/path/to/read/as/rdd")
Run Code Online (Sandbox Code Playgroud)

SparkContext.wholeTextFiles允许您读取包含多个小文本文件的目录,并将它们中的每一个作为(filename, content) 对返回。这与 textFile 形成对比,后者将在每个文件中每行返回一条记录。