0

我在我的 azure databricks 笔记本中使用 scala 作为编程语言,我的数据框给了我准确的结果,但是当我试图在 csv 中存储相同的结果时,它会移动逗号(,)来的单元格

spark.sql("""
  SELECT * FROM invalidData
  """).coalesce(1)
      .write
      .option("header", "true")
      .format("com.databricks.spark.csv")
      .mode("overwrite")
      .save(s"$dbfsMountPoint/invalid/${fileName.replace(".xlsx", ".csv")}")

这里有一列具有256GB SSD、Keyb.:之类的数据,因此在使用上述函数编写它时,它在另一个单元格中的逗号(,)之后显示字符串。任何火花内置解决方案都适用...

4

1 回答 1

0

正如@Jasper-M 指出的那样,您可以使用自定义分隔符编写输出 csv。

在此示例中,我们使用|分隔符:

spark.sql("""
  SELECT * FROM invalidData
  """).coalesce(1)
      .write
      .option("header", "true")
      .format("com.databricks.spark.csv")
      .option("sep", "|")
      .mode("overwrite")
      .save(s"$dbfsMountPoint/invalid/${fileName.replace(".xlsx", ".csv")}")

值得注意的是,save方法采用保存路径而不是文件名本身。.coalesce .csv file (1 file since you set (1)`) 将保存在此路径下,将此输入视为目录。

要阅读.csv后面的内容,请使用 spark:

spark.read.format("com.databricks.spark.csv")
      .option("inferSchema", "true")
      .option("sep","|")
      .option("header", "true")
      .load(s"$dbfsMountPoint/invalid/${path}")
于 2021-10-25T11:05:39.157 回答