小编Sai*_*hna的帖子

我们可以使用SizeEstimator.estimate估算RDD/DataFrame的大小吗?

我有一个DataFrame,它将由hiveContext通过执行Hive SQL创建,在我的情况下,查询的数据应该被推送到不同的数据存储区.

由于我试图执行的SQL,DataFrame有数千个分区.

要将数据推送到数据存储区,我使用mapPartitions()并获取连接并推送数据.

由于分区数量的原因,数据目标上的负载非常高,我可以coalsec()根据DataFrame的大小将分区数量设置为所需的数量.

在我的所有情况下,SQL生成的数据量并不相同.在少数情况下,它可能是几百个记录,在极少数情况下可能会达到几百万.因此,我需要一种动态的方式来决定分区的数量coalsec().

在谷歌搜索后,我可以看到我们可以SizeEstimator.estimate()用来估计DataFrame的大小,然后根据一些计算划分计数以获得分区数.但看的执行SizeEstimator.estimate火花的回购协议向我表明它已换一个单个JVM站立点实施,应该用于像广播变量等对象,而不是RDDS/DataFrames其跨JVM的分布.

任何人都可以建议如何解决我的问题?如果我的理解是错误的,请告诉我.

apache-spark

7
推荐指数
1
解决办法
3095
查看次数

标签 统计

apache-spark ×1