前面创建fluss的日志表和主键表的时候,我们演示过fluss桶的使用。在fluss中,桶是表数据存储的最小单元。
创建 Fluss 表时,可以通过设置'bucket.num' = '<num>'表的属性来指定 bucket 的数量。
目前,Fluss 支持 3 种 bucketing 策略:Hash Bucketing,Sticky Bucketing和Round-Robin Bucketing。主键表只允许使用Hash Bucketing。日志表默认使用Sticky Bucketing ,但可以使用其他两种 bucketing 策略。
下面分别介绍下这3种桶策略:
一、Hash Bucketing
Hash Bucketing在 OLAP 场景下比较常见,优点是可以非常均匀的分布到多个节点上,充分利用分布式计算的能力,并且有很好的扩展性(rescale buckets 或者 clusters)来应对海量数据。
用法:设置'bucket.key' = 'col1, col2'
表的属性以指定哈希存储桶的存储桶键。主键表默认使用主键(不包括分区键)作为存储桶键。
二、Sticky Bucketing
Sticky Bucketing可实现更大的批次,并减少将记录写入日志表时的延迟。发送批次后,Sticky Bucketing会发生变化。随着时间的推移,记录会均匀分布在所有存储桶中。Sticky Bucketing是日志表的默认存储桶策略。这非常重要,因为日志表使用 Apache Arrow 作为底层数据格式,这对于大批次非常有效。
用法:设置'client.writer.bucket.no-key-assigner'='sticky'
表的属性以启用此策略。PrimaryKey 表不支持此策略。
三、Random-Robin Bucketing
Random-Robin Bucketing是一种简单的策略,它会为每条记录随机选择一个bucket再写入,适合数据分布比较均匀,数据不倾斜的场景。
用法:设置'client.writer.bucket.no-key-assigner'='round_robin'
表的属性以启用此策略。PrimaryKey 表不支持此策略。
对于桶的使用没有太多的介绍,熟悉大数据的同学都应该知道,在合适的场景根据数据进行计算进行分桶即可。对于我们使用doris的经验来说,一般一个bucket存储的数据在1-3G左右即可。
还没有评论,来说两句吧...