【问题标题】:Pyspark- Save each dataframe to a single filePyspark-将每个数据帧保存到一个文件中
【发布时间】:2020-06-02 04:47:53
【问题描述】:

我正在尝试将过滤后的数据帧保存回同一个源文件。

我写了下面的代码来将目录中每个文件的内容转换为单独的Dataframe,过滤它并将其保存回同一个文件

rdd = sparkSession.sparkContext.wholeTextFiles("/content/sample_data/test_data")
# collect the RDD to a list
list_elements = rdd.collect()
for element in list_elements:
  path, data = element
  df = spark.read.json(spark.sparkContext.parallelize([data]))
  df = df.filter('d != 721')
  df.write.save(path, format="json", mode="overwrite")

我原以为它会用更新的数据覆盖文件,但它正在使用文件名创建一个文件夹并创建以下结构和部分文件:

如何将每个更新的数据框保存回同一个源文件 (.txt)? 提前致谢。

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    要将其保存到 1 个文件,请在 .save() 之前使用 .coalesce(1).repartition(1) 选项,这将导致相同的文件夹结构,但里面会有 1 个 json 文件。

    要在保存后使用“正常”名称保存它,您需要剪切里面的 1 个 json 文件,粘贴并用所需的名称重命名它。您可以查看 csv 文件的代码 here

    【讨论】:

      猜你喜欢
      • 2018-02-02
      • 2021-07-23
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      相关资源
      最近更新 更多