96SEO 2026-02-23 13:37 9
在数据写入时#xff0c;运行并发写入多个小文件#xff0c;从而提升写入的性能#xff1b;同时通过一个异步#xff08;也可以配置同步#xff0c;但不推荐

在数据写入时运行并发写入多个小文件从而提升写入的性能同时通过一个异步也可以配置同步但不推荐进程或者周期性调度来执行小文件合并成大文件在这个过程中hudi还考虑到对数据按照特定的列进行重排序这样在解决小文件问题的同时还优化了查询性能可谓是“两全其美”。
对于Clustering的手法其实是一种比较通用的优化数据重新布局的手段。
其中在Hive/Spark
by只是在hudi中更加追求完美多了一项合并小文件工作。
关于cluster的几个配置参数
配置项默认值说明hoodie.clustering.inlinefalsehoodie.clustering.schedule.inlinefalsehoodie.clustering.async.enabledfalsehoodie.clustering.inline.max.commits4hoodie.clustering.async.max.commits4hoodie.clustering.plan.strategy.small.file.limit314572800
中。
hoodie.clustering.plan.strategy.target.file.max.bytes1073741824
1GB。
合并后的最大文件不会超过该值。
hoodie.clustering.plan.strategy.sort.columns--针对哪个列重新进行排序。
对于该字段过滤条件的查询有很大性能提高。
的执行机制和compaction的机制类似都是分为Schedule和execute两个阶段。
计划的阶段主要是规划哪些文件参与Clusetring,然后生成一个计划Clusetring
Plan保存到TimelineTimeline中的Instant会有一个replacecommit的值状态是REQUESTED
执行阶段主要工作是读取Timeline中的计划执行完毕最后将replace
和compaction一样。
Clustering运行模式分为同步、异步、半异步为本文的一种叫法在hudi官网没有体现。
他们之前的差异主要体现在从提交到计划到执行的的三个阶段的推进上。
Execute。
在该模式下当累积的提交Commit次数到达一个阈值时会立即触发
hoodie.clustering.inline.max.commits
配置项参数hoodie.clustering.inlinetruehoodie.clustering.schedule.inlinefalsehoodie.clustering.async.enabledFalse
Writer否则用户需要自己保证有一个独立的进程或线程负责定期执行
操作。
在异步模式下由于发起计划和提交之间没有必然的协同关系所以在发起计划时Timeline
中可能尚未积累到足够数量的提交或者提交数量已经超过了规定阈值如果是前者不会产生计划计划如果是后者计划计划会将所有累积的提交涵盖进来在这一点上Clustering
配置项设定值hoodie.clustering.inlinefalsehoodie.clustering.schedule.inlinefalsehoodie.clustering.async.enabledtrue
Execute即计划会伴随提交自动触发但执行还是通过前面介绍的三种异步方式之一去完成。
简单总结一下半异步的设计思想它在每次提交时都会尝试生成计划如果此前已经生成了计划且尚未执行则放弃计划等待其被执行当异步进程或线程完成执行作业时紧接着的下一次提交会立即生成新的计划这样整个
配置项设定值hoodie.clustering.inlineFalsehoodie.clustering.schedule.inlinetruehoodie.clustering.async.enabledfalse
在排期和执行上都有可插拔的策略以及在执行期间如何应对数据更新也有相应的更新策略执行策略和更新策略较为简单使用默认配置即可本文不再赘述详情可参考官方文档。
本文着重介绍一下排期策略。
Hudi
SparkSizeBasedClusteringPlanStrategy该策略为默认的排期策略它会筛选出符合条件的小文件就是看文件大小小于
clustering.plan.strategy.small.file.limit
SparkRecentDaysClusteringPlanStrategy该策略会在此前
天的分区内查找小文件对于使用日期作分区且数据增量是可预期的数据表来说这种策略是非常适合的。
如果在这种情况下使用默认排期策略就会扫描全部分区给系统带来没有必要的负载。
SparkSelectedPartitionsClusteringPlanStrategy该策略允许我们针对特定的分区进行
Clustering这可能会应用在运维或某些具有独特业务特征的数据表上。
hoodie.clustering.plan.strategy.sort.columns
能提升数据读取性能的关键。
该列的选择对提升查询效率非常重要通常会选择查询频率最高的条件列。
尽管该配置项支持多列但如果配置了两个或更多列的话对于那些排在第一列后面的列来说以它们为条件的查询并不能从中获得太多收益这和在
关闭parquet小文件检查将hoodie.parquet.small.file.limit置为0。
这样做hudi将会把所有的文件认为是大文件。
任何数据在写入的时候都不在发生copy-on-write的copy的操作。
而是直接写入新的文件这样减少了写入操作的负担。
所以产生的小文件就是Clustering就要去解决的事情。
配置项默认值设定值hoodie.clustering.inlinefalseTruehoodie.clustering.schedule.inlinefalsefalsehoodie.clustering.async.enabledFalseFalsehoodie.clustering.async.enabled42hoodie.clustering.async.enabled314572800
)hoodie.clustering.async.enabled1073741824
)hoodie.parquet.small.file.limit104857600
true,hoodie.clustering.schedule.inline
false,hoodie.clustering.async.enabled
false,hoodie.clustering.inline.max.commits
2,hoodie.clustering.plan.strategy.small.file.limit
314572800,hoodie.clustering.plan.strategy.target.file.max.bytes
1073741824,hoodie.parquet.small.file.limit
event_date2023-11-02;2updatebase
event_date2023-11-02;3updateclustering
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback