【发布时间】:2021-02-28 14:12:22
【问题描述】:
我正在尝试编写一个自定义函数,该函数采用 RDD,每条记录小写,将其拆分为字符,然后将每条记录用作键值对中的键,其中值始终为 1。我已经编写了另外两个自定义函数,分别进行小写和字符拆分,to_lower() 和 to_characters()。
我尝试了几种不同的方法,但到目前为止,我只能将整个列表作为键,而不是每条记录都在其自己的对中。
#Attempt 1
def rdd_to_character_value_pairs(rdd):
lowerRDD = rdd.map(lambda x: to_lower(x))
characterRDD = lowerRDD.map(lambda x: to_characters(x))
pairedRDD = characterRDD.map(lambda x: ([char for char in characterRDD], 1))
return pairedRDD
#Attempt 2
def rdd_to_character_value_pairs(rdd):
lowerRDD = rdd.map(lambda x: to_lower(x))
characterRDD = lowerRDD.map(lambda x: to_characters(x))
for i in characterRDD.collect():
return ([char for char in characterRDD], 1)
#have also tried return (i,1)
我了解您无法迭代 RDD,但我也无法找到任何解决方法。
【问题讨论】:
-
欢迎来到 SO!查看tour。你的问题到底是什么?我不熟悉 RDD,所以我不确定您是在寻找特定于它们的东西还是像 building a dict from a list of keys with all the same value 这样更通用的东西。在任何情况下,提供带有示例输入、所需输出和实际输出的minimal reproducible example 以及删除关于
to_lower和to_characters的内容也将有所帮助,因为它似乎与问题无关。你可以edit你的帖子。 -
顺便说一句,
lambda x: func(x)是多余的。只需改用func。我相信这被称为 eta-reduction。
标签: python