问题描述
我正在尝试创建一个配对的 RDD,其中的键将来自一个 RDD,而所有的值都是 1。
例如,如果有人要导入字符串 "Hello World!"
并将其并行化为 RDD,输出将是:('h',1),('e',('l',...
到目前为止,我已经写了:
keyRDD = characterRDD.map(lambda x: (x,1))
的结果是 (['h','e','l','o','w','r','d,' '!'],1)
的输出。关闭,但不是我要找的。p>
我也尝试过使用 for 循环,但在尝试迭代 RDD 时收到错误。
解决方法
您可以将 flatMap
与列表理解结合使用:
rdd = sc.parallelize(["hello world!"])
rdd = rdd.flatMap(lambda s: [(l,1) for l in s if l != ' '])
print(rdd.collect())
#[('h',1),('e',('l',('o',('w',('r',('d',('!',1)]