我有一个.dat文件,由 \u0001
. 应该是这样的
+---+---+---+
|A |B |C |
+---+---+---+
|1 |2,3|4 |
+---+---+---+
|5 |6 |7 |
+---+---+---+
但是我得到的文件在几行的字段之间有很多空格
A\u0001B\u0001C
1\u0001"2,3" \u00014
5\u00016\u00017
在上面的第二行中,两列之间有79个空格。现在当我在spark里读到这个文件时
val df = spark.read.format("csv").option("header", "true").option("delimiter", "\u0001").load("path")
df.show(false)
+---+-----------------------------------------------------------------------------------+----+
|A |B |C |
+---+-----------------------------------------------------------------------------------+----+
|1 |2,3 4|null|
+---+-----------------------------------------------------------------------------------+----+
|5 |6 |7 |
+---+-----------------------------------------------------------------------------------+----+
有没有办法在不改变输入文件的情况下解决这个问题?
3条答案
按热度按时间fdbelqdn1#
您需要删除引号字符属性并将尾部属性设置为
iyfjxgzm2#
为此,通过将“ignoreleadingwhitespace”和“ignoretrailingwhitespace”设置为true,您将删除所有空格:
s3fp2yjn3#
尝试添加
.option("ignoreTrailingWhiteSpace", true)
根据文件:ignoretrailingwhitespace(默认为false):一个标志,指示是否应跳过正在读取的值的尾部空白。
编辑:您需要关闭报价以使其适用于您的示例:
结果:
要删除引号,可以尝试(注意这将删除字符串中的引号):