gpt4 book ai didi

pyspark - 计算每个 pyspark RDD 分区中的元素数

转载 作者:行者123 更新时间:2023-12-04 17:32:36 24 4
gpt4 key购买 nike

我正在寻找与此问题等效的 Pyspark:How to get the number of elements in partition? .

具体来说,我想以编程方式计算 pyspark RDD 或数据帧的每个分区中的元素数量(我知道此信息在 Spark Web UI 中可用)。

这次尝试:
df.foreachPartition(lambda iter: sum(1 for _ in iter))
结果是:

AttributeError: 'NoneType' object has no attribute '_jvm'



我不想将迭代器的内容收集到内存中。

最佳答案

如果您问:我们可以在不迭代的情况下获取迭代器中的元素数量吗?答案是No .

但是我们不必将其存储在内存中,如您提到的帖子中所示:

def count_in_a_partition(idx, iterator):
count = 0
for _ in iterator:
count += 1
return idx, count

data = sc.parallelize([
1, 2, 3, 4
], 4)

data.mapPartitionsWithIndex(count_in_a_partition).collect()

编辑

请注意,您的代码非常接近解决方案,只是 mapPartitions需要返回一个迭代器:
def count_in_a_partition(iterator):
yield sum(1 for _ in iterator)

data.mapPartitions(count_in_a_partition).collect()

关于pyspark - 计算每个 pyspark RDD 分区中的元素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38924999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com