我正在尝试使用scala读取spark上的csv。
其中一个文本字段可以包含回车符(\c),后跟换行符(\n)。正确行的末尾也用同样的方式标记,回车后换行。您已经可以想象当前面提到的文本字段也包含它们时会发生什么。这种情况偶尔会发生一次,但当它发生时,reading函数会将它们解释为文件中新行的开始,并生成一个恼人的列移位加上一些包含此文本字段某些部分的额外行。
我读过很多与我类似的问题。我尝试了大多数的解决办法,但都没用。目前,我正在使用以下代码读取csv,但它会产生令人讨厌的偏移:
val df1 = (spark.read
.option("delimiter", "¦")
.option("header",true)
.option("encoding", "ISO-8859-1")
.option("header", "true")
.option("inferSchema", "true")
.csv(s3Location))
我需要编码,因为如果我读取文件时没有它,字段分隔符(即 ¦
)未正确显示。我试过了 .option("multiline", "true")
,来逃避角色,但什么都不管用。
我创建的唯一解决方案是使用 .option("mode", "DROPMALFORMED")
. 然而,这似乎相当激烈,因为他们可以携带有用的信息。
暂无答案!
目前还没有任何答案,快来回答吧!