如果实际数据嵌入了相同的分隔符,如何使用spark rdd读取分隔符文件

nafvub8i  于 2021-05-16  发布在  Spark
关注(0)|答案(1)|浏览(630)

我正在尝试将文本文件读入rdd
我的样本数据如下

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

带制表符分隔符的3列。我的数据也被嵌入了同一个分隔符(你好!)。有人能帮我正确解析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个值被Map到第2行
我的预期产出是

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

在dataframe中,我可以保留报价选项,但在rdd中如何才能做到同样的效果?

laik7k3q

laik7k3q1#

使用 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']]

相关问题