【问题标题】:Saving and Loading wholeTextFiles using Spark RDD使用 Spark RDD 保存和加载整个文本文件
【发布时间】:2020-09-13 15:12:21
【问题描述】:

我需要在 spark 中对一些文本文件进行批处理。基本上有人给了我大量畸形的 csv 文件。它们包含多行任意文本格式的标题数据,然后是多行格式正确的 csv 数据。我需要将此数据拆分为两个文件,或者至少以某种方式摆脱标题。

无论如何,我已经读到你可以得到一个格式如下的 RDD:

[(文件名,内容)]

通过使用

火花\ .sparkContext \ .wholeTextFiles(input_files_csv)

然后我想在这个 RDD 上执行一个映射操作,这会产生与原始格式完全相同的另一种格式

[(新文件名,内容)]

然后我希望集群将这些内容保存在这些文件名下。

我找不到可以为我执行此操作的写入命令。我可以保存 RDD raw,但我不能将它保存为普通文件,以便以后读取为数据帧。

我想我可以删除标题,然后将文件名保存为一个巨大的 csv 文件作为新列,但我觉得这样不会那么有效。

有人能解决我的问题吗?

【问题讨论】:

    标签: apache-spark pyspark rdd


    【解决方案1】:

    这是 Scala,但它在 Python 中应该不会太远。在“foreach”中,我没有使用任何特定于 spark 的东西来编写文件,只是使用常规的 Hadoop API。

    sc.wholeTextFiles("/tmp/test-data/")
      .foreach{ x =>
        val filename = x._1
        val content = x._2
        val fs = FileSystem.get(new Configuration())
        val output = fs.create(new Path(s"${filename}-copy"))
        val writer = new PrintWriter(output)
        writer.write(content)
        writer.close
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-23
      • 2015-12-13
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多