无法使用spark scala写入带有标头的csv

szqfcxe2  于 2021-05-24  发布在  Spark
关注(0)|答案(1)|浏览(469)

我以前从未遇到过这个问题,但由于某种原因,当我在spark scala中向csv写入Dataframe时,输出的csv文件格式完全错误。1,它没有任何标题行,2,列之间有随机的大空白。
但有趣的是,当我在ide中执行df.show时,它的输出完全符合标题和正确的格式。
我使用的是一个非常基本的,通用的写入csv方法,

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

为什么会这样?是不是因为一些加入和合并,我正在做的,是被分布在集群,不能重新格式化前写入csv的正确?

xqnpmsa8

xqnpmsa81#

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

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

相关问题