我有一个大约35 GB的CSV文件,其中包含上述格式的数据。
"Col1"^A"Col2"^A"Col3"^A"Col4"
"1"^A"AB\\"CD"^A"0000"^A"0000"
"2"^A"AB\\"CD\\"^A"0000"^A"0000"
字符串
其中我们有^A
分离器
现在的问题是,当我在spark df中加载它时,使用:
df=spark.read.csv(file_path, sep="^A", header=True, multiLine=True)
型
输出结果如下所示:
"1"|"AB\"CD"|"0000"|"0000"
"2"|"AB\"CD"^A"0000"|"0000"|undefined
型
如果我试图使用转义选项escape="\\""
来解决它,整个df会乱糟糟的,所有列的数据都存储在一行中,\
出现,并使multiLine选项无关。
我不能在创建df后使用正则表达式来更改它,因为df中的列已经被扭曲了。
有没有什么方法可以让我通过这个\\
打破df问题,而不扰乱multiLine选项?如果没有,有没有什么方法可以通过pyspark将整个CSV文件中的\\"
的所有示例替换为"
,然后创建df?
提前感谢!
尝试使用escape="\\""
和quote="}"
,它们确实在某些情况下解决了列问题,但最终会混淆multiLine条目。请让我知道是否需要任何其他输入。- 谢谢-谢谢
1条答案
按热度按时间bihw5rsg1#
即使我在我的环境中也得到了同样的结果。
的数据
你遵循所有这些方法。下面是csv文件中的数据。
的
在我的例子中,escape
\"
成功地工作了。字符串
的
如果不起作用,请尝试在上面的代码中使用escape
'"'
。即使这样也不起作用,首先替换它们并加载到spark dataframe中。
您可以使用下面的函数来替换这些东西并写入新文件。
型
并读取新文件。
型
的
或者将所有
\
和"
替换为空并读取它们。型
的