apache-spark - Spark : Find Each Partition Size for RDD

标签 apache-spark pyspark apache-spark-sql spark-dataframe

查找给定 RDD 的每个分区大小的最佳方法是什么。我正在尝试调试倾斜的分区问题,我试过这个:

l = builder.rdd.glom().map(len).collect()  # get length of each partition
print('Min Parition Size: ',min(l),'. Max Parition Size: ', max(l),'. Avg Parition Size: ', sum(l)/len(l),'. Total Partitions: ', len(l))

它适用于小型 RDD,但对于较大的 RDD,它会出现 OOM 错误。我的想法是glom()导致这种情况发生。但无论如何,只是想知道是否有更好的方法来做到这一点?

最佳答案

用:

builder.rdd.mapPartitions(lambda it: [sum(1 for _ in it)])

关于apache-spark - Spark : Find Each Partition Size for RDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41068112/

相关文章:

python - PySpark 数据框中的日期差异

apache-spark - Pyspark 仅使用 sudo 运行

scala - 如何从 Scala 的可迭代列表创建 DataFrame?

hadoop - 是否应在客户端安装HBase? sqoop是API吗? Drill是API吗?

python - 将通过 FOR 循环函数输出的多个数据帧合并为一个数据帧

python - 如何在 PySpark 2.1.0 中通过事件时间窗口定义 UDAF

python - 在 (Py)Spark DataFrame 中映射值

apache-spark - Pyspark 错误 - py4j.Py4JException : Method limit([class java. lang.String]) 不存在

scala - 获取 Spark MLlib 决策树中每个叶子的默认元素数

apache-spark - 具有窗口功能的PySpark数据偏度