如果实际数据嵌入了相同的定界符,如何使用 Spark RDD 读取定界文件

How to read a delimited file using Spark RDD, if the actual data is embedded with same delimiter

我正在尝试将文本文件读入 rdd

我的示例数据如下

"1" "Hai    How are you!"   "56"
"2"                         "0213"

3 列带有制表符分隔符。我的数据也嵌入了相同的分隔符(How\tHow areyou!)。有人可以帮我在 pyspark 中正确解析数据吗?

my_Rdd = Spark.SparkContext.textFile("Mytext.txt").map(lambda line:line.split('\t'))

当我执行上面的代码时,我得到以下输出

ColA,ColB,Colc
"1","Hai,How are you!"
"2","0123"

第 2 列拆分为第 3 列,因为它在实际数据中具有相同的分隔符,对于第 2 行,第 3 个值被映射到第 2

我的预期输出是

ColA,ColB,Colc
"1","Hai    How are you!","56"
"2",,"0123"

在 Dataframe 中我可以保留报价选项,但我们如何在 RDD 中做同样的事情?

使用忽略引号分隔符的 shlex.split()

import shlex

sc.textFile('Mytext.txt').map(lambda line: shlex.split(line))

字符串的另一个例子:

import shlex

rdd = sc.parallelize(['"1"\t"Hai\tHow are you!"\t"56"']).map(lambda line: shlex.split(line))

>>> rdd.collect()
[['1', 'Hai\tHow are you!', '56']]