如何创建将一行分成单词而不是单数单词?

时间:2016-10-17 09:09:56

标签: split pyspark jupyter

我在Jupyter中将一个CSV文件读入RDD,并希望将每一行转换为一对单词而不是单数单词,然后创建单词对的元组,但不知道我应该怎么做。 CSV文件如下所示:

阿富汗,AFG
阿尔巴尼亚,ALB
阿尔及利亚,ALG
美国Somoa,ASA
安圭拉,友邦保险

我试过这个:

lines = sc.textFile(...) words = lines.flatMap(lambda line:line.split(“”))

但它并没有让阿尔巴尼亚,ALB成为一个元组。相反,它将阿尔巴尼亚视为一个,将ALB视为另一个。求救!

1 个答案:

答案 0 :(得分:4)

您需要使用map代替flatMap。您可以按如下方式创建元组列表:

result = sc.textFile("...").map(lambda line:tuple(line.split(",")))

result.collect()然后返回:

[(u'Afghanistan', u' AFG'), 
 (u'Albania', u' ALB'), 
 (u'Algeria', u' ALG'), 
 (u'American Somoa', u' ASA'), 
 (u'Anguilla', u' AIA')]

查看此输出,您可能需要添加unicode.strip以删除前导空格:

sc.textFile("....").
map(lambda line:tuple(map(unicode.strip,line.split(",")))).
collect()