从字符列表创建成对rdd

fumotvh3  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(204)

我试图创建一个成对的rdd,其中键来自rdd,值都是1。
例如,如果有人要导入字符串 "hello world!" 并将其并行化为rdd,其输出将是: ('h', 1), ('e', 1), ('l', 1), ('l', 1),... 到目前为止,我写了:

keyRDD = characterRDD.map(lambda x: (x, 1))

结果是 (['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd,' '!'], 1) . 很接近,但不是我想要的。
我也尝试过使用for循环,但是在尝试迭代rdd时收到了一个错误。

bqucvtff

bqucvtff1#

你可以用 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', 1), ('l', 1), ('l', 1), ('o', 1), ('w', 1), ('o', 1), ('r', 1), ('l', 1), ('d', 1), ('!', 1)]

相关问题