我正在尝试将文本文件读取到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']]