繁体   English   中英

无法使用 Spark Scala 使用标头写入 CSV

[英]Not able to write to CSV with header using Spark Scala

我以前从未遇到过这个问题,但是由于某种原因,当我在 spark scala 中将数据帧写入 CSV 时,输出的 CSV 文件格式完全错误。 1,它没有任何标题行,2,列之间有随机的大空白。

但有趣的是,当我在 IDE 中执行 df.show 时,它输出的标题和格式都非常好。

我正在使用一种非常基本的通用写入 csv 方法,

df.write.csv("output.csv")

为什么会发生这种情况? 是不是因为我正在做的一些加入和合并正在跨集群分布并且在写入 CSV 之前无法正确重新格式化?

您缺少一些选项:

  • sep (默认, ):将单个字符设置为每个字段和值的分隔符。
  • quote (default " ): 设置用于转义引用值的单个字符,其中分隔符可以是值的一部分。如果设置了空字符串,则使用 u0000 (空字符)。
  • escape (默认\\ ):设置用于在已引用的值中转义引号的单个字符。
  • charToEscapeQuoteEscaping (默认escape\\0 ):设置用于转义引号字符的单个字符。 当转义字符和引号字符不同时,默认值为转义字符,否则为 \\0。
  • escapeQuotes (默认为true ):一个标志,指示是否应始终将包含引号的值括在引号中。 默认是转义包含引号字符的所有值。
  • quoteAll (默认false ):一个标志,指示是否所有值都应始终用引号括起来。 默认是仅转义包含引号字符的值。
  • header (默认false ):将列名写入第一行。
  • nullValue (默认为empty string ):设置空值的字符串表示形式。
  • compression (默认为null ):保存到文件时使用的压缩编解码器。 这可以是已知的不区分大小写的缩写名称之一(none、bzip2、gzip、lz4、snappy 和 deflate)。
  • dateFormat (default yyyy-MM-dd) :设置表示日期格式的字符串。 自定义日期格式遵循 java.text.SimpleDateFormat 中的格式。 这适用于日期类型。
  • timestampFormat (default yyyy-MM-dd'T'HH:mm:ss.SSSXXX) :设置表示时间戳格式的字符串。 自定义日期格式遵循 java.text.SimpleDateFormat 中的格式。 这适用于时间戳类型。
  • ignoreLeadingWhiteSpace (default true )`:一个标志,指示是否应跳过正在写入的值中的前导空格。
  • ignoreTrailingWhiteSpace (默认为true ):一个标志,用于定义是否应跳过正在写入的值的尾随空格。

在你的情况下:

df.write.option("header","true").csv("output.csv")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM