PySpark 过滤元素列表,然后合并回来
PySpark filter a list of element and then merge back
我的 rdd
包含一对 IDs
和一个 list
项目。例如,每个项目都会像 (1, [a, b, c])
。我需要对此项应用 filter
。假设我不想在 list
.
我目前的方法是使用 flatMapValues
将项目分解为键值对。 filter
并使用 groupByKey
将它们合并回 (1, [b, c])
.
在我做了一些研究之后,当数据量很大时,groupByKey
似乎很糟糕。此外,似乎我正在分解 list
,而他们在 list
之后将其合并回来似乎是多余的。有没有办法在不破坏 array
并 merge
的情况下完成此操作?
您可以使用列表理解 mapValues
:
rdd2 = rdd1.mapValues(lambda l: [i for i in l if i != 'a'])
我的 rdd
包含一对 IDs
和一个 list
项目。例如,每个项目都会像 (1, [a, b, c])
。我需要对此项应用 filter
。假设我不想在 list
.
我目前的方法是使用 flatMapValues
将项目分解为键值对。 filter
并使用 groupByKey
将它们合并回 (1, [b, c])
.
在我做了一些研究之后,当数据量很大时,groupByKey
似乎很糟糕。此外,似乎我正在分解 list
,而他们在 list
之后将其合并回来似乎是多余的。有没有办法在不破坏 array
并 merge
的情况下完成此操作?
您可以使用列表理解 mapValues
:
rdd2 = rdd1.mapValues(lambda l: [i for i in l if i != 'a'])