Spark解析未用引号引起来的CSV文件中的反斜杠转义逗号

时间:2018-12-07 15:48:52

标签: apache-spark pyspark apache-spark-sql

例如,sparks spark无法在未用引号引起来的CSV文件中转义字符,

Name,Age,Address,Salary
Luke,24,Mountain View\,CA,100

我正在使用pyspark,以下代码显然不适用于“地址”字段中的逗号。

df = spark.read.csv(fname, schema=given_schema,
                sep=',', quote='',mode="FAILFAST")

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

能否请您先尝试使用rdd,将其重新格式化,然后在其上创建一个数据框。

df  = sc.textFile(PATH_TO_FILE) \
    .map(lambda x: x.replace("\\," ,"|")) \
    .mapPartitions(lambda line: csv.reader(line,delimiter=','))\
    .filter(lambda line: line[0] != 'Name') \
    .toDF(['Name','Age','Address','Salary'])

这是您的数据框现在的样子:

>>> df.show();
+----+---+----------------+------+
|Name|Age|         Address|Salary|
+----+---+----------------+------+
|Luke| 24|Mountain View|CA|   100|
+----+---+----------------+------+

我必须用“ |”替换地址列“ \”然后我使用定界符','分割了数据。不确定它如何满足您的要求,但它是否有效。