如果实际数据嵌入了相同的定界符,如何使用 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']]
我正在尝试将文本文件读入 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']]