Spark Scala - 并行处理文件并获取每个文件的数据帧

时间:2016-09-08 18:20:26

标签: scala apache-spark spark-dataframe

我要处理数以千计的大文件。 我试图并行读取这些文件,然后将它们中的每一个转换为DataFrame,以便我可以聚合数据并提取数字特征等。

我尝试了sc.wholeTextFiles(),它为我们提供了文件名和内容元组RDD,但是我不允许使用sparkContext / sqlContext来创建RDD映射中的数据帧。

val allFiles = sc.wholeTextFiles(inputDir)
val rows = allFiles.map {
  case (filename, content) => {
    val s = content.split("\n")
    // Convert the content to RDD and dataframe later
    //val r = sc.parallelize(s); <-- Serialization Error
  }
}

访问sc关于抛出序列化错误,因为我们不应该sc任务。

我也考虑过:

val input = sc.textFile(inputDir)
input.mapPartitions(iter => <process partition data>)

但是采用上述方法,当文件很大时,它会分成几个分区,而且我无法将文件作为“整体”进行处理

还有其他选项我可以并行处理整个文件,转换每个数据帧等吗?

0 个答案:

没有答案