首页 > 解决方案 > 使用 Scala Spark 在同一个 csv 文件中追加新表

问题描述

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

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

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

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

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

标签: scalaapache-spark

解决方案


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

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

推荐阅读