【问题标题】:Append new tables in the same csv file using Scala Spark使用 Scala Spark 在同一个 csv 文件中追加新表
【发布时间】:2021-04-10 04:02:00
【问题描述】:

我想将表 metrics 附加到现有的 CSV 文件中。我使用下面的代码:

    metrics.coalesce(1)
    .write
    .option("header", "true")
    .option("sep",",")
    .mode("Append")
    .csv("data/outputs.csv}")

每次运行下面的代码块时,都会在 data/outputs.csv 中创建一个新文件 .part-00000-{xxxxxx-xxxxx......}.csv(其中 outputs.csv 是一个文件夹,而不是 CSV 文件)。

有没有办法始终将表格附加到同一个 CSV 文件中而不是创建新的 .csv 文件?以及任何方式来定义这个 CSV 的最终名称,而不是使用 .part-00000-{xxxxxx-xxxxx......}.csv 格式?

我尝试使用保存模式附加选项 (.mode(SaveMode.Append)) 获得相同的复制结果。

【问题讨论】:

  • 由于 spark 分布式特性,没有直接的方法可以做到这一点,但您可以在使用 spark 保存之后执行此操作。请参阅此链接以获取参考:stackoverflow.com/questions/40792434/…。我认为你不应该这样做,除非你有一个无法解决的用例。

标签: scala apache-spark


【解决方案1】:

您必须明确联合它们,然后使用Overwrite 而不是附加。 像这样的:

spark
  .read
  .option(...)
  .csv("data/outputs.csv")
  .union(metrics)
  .coalesce(1)
  .write
  .option(...)
  .mode("Overwrite")
  .csv("data/outputs.csv")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 2018-04-26
    • 2023-04-07
    • 2019-01-12
    相关资源
    最近更新 更多