1. 摘要
在之前的一篇博客中,我们介绍了Clustering(聚簇)
的表服务来重新组织数据来提供更好的查询性能,而不用降低摄取速度,并且我们已经知道如何部署同步Clustering
,本篇博客中,我们将讨论近期社区做的一些改进以及如何通过HoodieClusteringJob
和DeltaStreamer
工具来部署异步Clustering
。
2. 介绍
通常讲,Clustering
根据可配置的策略创建一个计划,根据特定规则对符合条件的文件进行分组,然后执行该计划。Hudi支持并发写入,并在多个表服务之间提供快照隔离,从而允许写入程序在后台运行Clustering
时继续摄取。有关Clustering
的体系结构的更详细概述请查看上一篇博文。
3. Clustering策略
如前所述Clustering
计划和执行取决于可插拔的配置策略。这些策略大致可分为三类:计划策略
、执行策略
和更新策略
。
3.1 计划策略
该策略在创建Clustering计划时发挥作用。它有助于决定应该对哪些文件组进行Clustering。让我们看一下Hudi提供的不同计划策略。请注意,使用此配置可以轻松地插拔这些策略。
-
SparkSizeBasedClusteringPlanStrategy:根据基本文件的小文件限制选择文件切片并创建
Clustering
组,最大大小为每个组允许的最大文件大小。可以使用此配置指定最大大小。此策略对于将中等大小的文件合并成大文件非常有用,以减少跨冷分区分布的大量文件。 -
SparkRecentDaysClusteringPlanStrategy:根据以前的
N
天分区创建一个计划,将这些分区中的小文件片进行Clustering
,这是默认策略,当工作负载是可预测的并且数据是按时间划分时,它可能很有用。 -
SparkSelectedPartitionsClusteringPlanStrategy:如果只想对某个范围内的特定分区进行
Clustering