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



我正在尝试将文本文件读取到rdd 中

我的样本数据低于

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

带有Tab分隔符的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"

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

我的预期输出是

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"HaitHow are you!"t"56"']).map(lambda line: shlex.split(line))
>>> rdd.collect()
[['1', 'HaitHow are you!', '56']]

最新更新