使用spark读取CSV时的Unescape逗号

时间:2018-04-20 05:33:03

标签: python apache-spark pyspark

我有一个CSV文件,其中包含名称字段,其中逗号(,)使用\进行转义

id,name
"10","Ashraful\, Islam"

我正在从pyspark

中读取csv文件
test = spark.read.format("csv").option("sep", ",").option("escape", "\\").option("inferSchema", "true").option("header", "true").load("test.csv")
test.show()

名称应为Ashraful, Islam,但要获得输出

+---+----------------+
| id|            name|
+---+----------------+
| 10|Ashraful\, Islam|
+---+----------------+

1 个答案:

答案 0 :(得分:1)

只需使用:

df = spark.read.csv('file:///mypath.../myFile.csv', sep=',', header=True)       
df.show()

这给出了输出:

+---+---------------+
| id|           name|
+---+---------------+
| 10|Ashraful, Islam|
+---+---------------+

编辑:我无法使用您拥有的输入文件复制您的问题,但如果它仍然存在,您可以通过解决方法解决它。只需更换" \," (或任何其他被转义的特殊字符)在数据框中。

你可以

from pyspark.sql.functions import *

df = spark.read.csv('file:///home/perfman/todel.csv', sep=',', header=True)
df.withColumn('nameClean', regexp_replace('name', '\\\,', ',')).show()

>>>
+---+----------------+---------------+
| id|            name|      nameClean|
+---+----------------+---------------+
| 10|Ashraful\, Islam|Ashraful, Islam|
+---+----------------+---------------+