我有一个.csv文件,其中的行包含字符串值:
"315700H9VGE9BHU9DK42","""LEGOS s.r.o."", švédsky ""LEGOS bolag med begr.amsvar""","cs","",""
我的第二个字段偶尔会包含'字符串with括起来的“引号”values':
"""LEGOS s.r.o."", švédsky ""LEGOS bolag med begr.amsvar"""
当读入spark dataframe时,值将呈现:"LEGOS s.r.o.", švédsky "LEGOS bolag med begr.amsvar"
我已经尝试过这个方法,并对注解掉的选项进行了修改,如in these docs所述。
df = (spark
.read
.format("csv")
.option("header", True)
.option("delimiter", ",")
.option("multiline", True)
.option("escapeQuotes", True)
.option("quote", "\"")
.option("escape", "\"")
# .option("escape", "\\")
# .option("escape", '""')
# .option("escape", "\n")
.schema(raw_schema)
.csv(landing_schema_file)
)
有什么想法吗
我运行的是Apache Spark 3.3.0和Scala 2.12
2条答案
按热度按时间b0zn9rqh1#
如果您的
.csv
文件只包含这一行:你想返回:
您可以用途:
我希望这能回答你的问题,祝你好运!
6vl6ewon2#
好的,我想我已经把这个问题确定为与Databasericks和Spark如何处理数据有关,而不是阅读数据有关。
我正在阅读一个大的3GB .csv文件到Databasericks使用。根据这个answer和@vilabinot的回答:
此数据集中的字段之一是国家代码。要测试读取的文件是否正常,请在以下内容上groupby和aggregate:
这是错误值被返回的地方,即。非国家/地区代码作为组返回。
| 国家|计数|
| --------------|--------------|
| PL-10| 1|
| 1至10,AFIL Tower,L。H. ROAD,|1|
但是,如果我然后尝试过滤df到这些值:
什么都没有回来。因此,我认为这实际上与Spark或Databricks试图优化不同功能的方式有关,而不是数据读取步骤本身。我尝试过的其他几个测试在groupby和filter上复制了这种行为:
作为参考,数据集是GLEIF LEI索引。