如何确定Spark中的存储桶数

时间:2019-05-08 18:00:02

标签: apache-spark

我已经阅读了很多关于Spark中的存储的文章,但仍无法清晰了解它。但是,到目前为止,我所了解的是:“装箱就像是一个分区中的一个分区,它用于具有很高基数的候选人,这有助于避免改组操作”。

即使在Spark文档中,也找不到足够的解释。从文档中粘贴示例

peopleDF.write.bucketBy(42,“名称”).sortBy(“ age”)。saveAsTable(“ people_bucketed”)

无法在此处理解如何确定数字“ 42”进行存储。请帮助理解相同的。另外,关于存储分区的任何更清晰的解释也将很好。

1 个答案:

答案 0 :(得分:0)

42就像生命的意义是什么?因此就是一个例子。

Spark Bucketing对于Spark中的ETL很方便,Spark Job A根据Bucketing def写出t1的数据,Spark Job B同样为t2写出数据,Spark Job C使用Bucketing定义将t1和t2连接起来,从而避免洗牌又称交换。优化。

没有通用公式。这取决于卷,可用的执行程序等。要点是避免改组。作为准则,JOINing和AGGr的默认值设置为200,因此可以使用200或更大的值,但是您又在您的集群上拥有多少资源?

但是,为了满足您对知识的追求,人们可能会争辩说,实际上应该将42设置为您分配给Spark Job / App的执行器数量(= 1个核心),而不会出现偏度问题。