如何将一行拆分为成对的单词而不是单个单词?

Bea*_*ung 6 split pyspark jupyter

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

阿富汗、AFG
阿尔巴尼亚、ALB
阿尔及利亚、ALG
美属索摩亚、ASA
安圭拉、AIA

我试过这个:

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

但它不会将 Albania, ALB 作为一个元组返回。相反,它将阿尔巴尼亚视为一个,将 ALB 视为另一个。请帮忙!

Ale*_*lex 7

您需要使用map而不是flatMap. 您可以按如下方式创建元组列表:

result = sc.textFile("...").map(lambda line:tuple(line.split(",")))
Run Code Online (Sandbox Code Playgroud)

result.collect() 然后返回:

[(u'Afghanistan', u' AFG'), 
 (u'Albania', u' ALB'), 
 (u'Algeria', u' ALG'), 
 (u'American Somoa', u' ASA'), 
 (u'Anguilla', u' AIA')]
Run Code Online (Sandbox Code Playgroud)

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

sc.textFile("....").
map(lambda line:tuple(map(unicode.strip,line.split(",")))).
collect()
Run Code Online (Sandbox Code Playgroud)