基础配置
本页介绍编写/读取 Hudi 表时可能用到的基础配置。这里只列出了最常用配置的一个子集。如需查看全部配置的完整列表,请访问全部配置页面。
- Hudi 表配置:Hudi 表的基础配置参数。
- Spark Datasource 配置:这些配置用于控制 Hudi Spark Datasource,提供定义键/分区方式、选择写入操作、指定记录合并方式以及选择读取查询类型的能力。
- Flink SQL 配置:这些配置用于控制 Hudi Flink SQL source/sink 连接器,提供定义记录键、选择写入操作、指定记录合并方式、启用/禁用异步 compaction 以及选择读取查询类型的能力。
- Write Client 配置:在内部,Hudi datasource 使用基于 RDD 的 HoodieWriteClient API 来实际执行对存储的写入。这些配置可以对文件大小、压缩、并行度、compaction、写入 schema、cleaning 等底层细节进行深度控制。虽然 Hudi 提供了合理的默认值,但为了针对特定工作负载进行优化,有时仍需调整这些配置。
- Metastore 与 Catalog 同步配置:Hudi 用于将元数据同步到外部 metastore 和 catalog 的配置。
- Metrics 配置:这组配置用于启用对关键 Hudi 统计数据和指标的监控与上报。
- Kafka Connect 配置:这组配置用于 Kafka Connect Sink Connector,以写入 Hudi 表。
- Hudi Streamer 配置:这组配置用于 Hudi Streamer 工具,它提供了从 DFS 或 Kafka 等不同来源进行数据摄取的方式。
note
在下面的表格中,(N/A) 表示没有设置默认值。
Hudi 表配置
Hudi 表的基础配置参数。
Hudi 表基础配置
Hudi 表的配置,例如数据摄取类型、存储格式、Hive 表名等。这些配置从 hoodie.properties 中加载,通常在将某个路径初始化为 hoodie base path 时设置,并且在 hoodie 表的整个生命周期内不会改变。
配置名称默认值描述
hoodie.bootstrap.base.path(N/A)需要作为 Hudi 表进行引导(bootstrap)的数据集基础路径Config Param: BOOTSTRAP_BASE_PATH
hoodie.compaction.payload.class(N/A)用于执行合并、压缩(compaction)的 Payload 类,即把增量日志与当前基础文件合并,然后生成新的基础文件。Config Param: PAYLOAD_CLASS_NAME
hoodie.database.name(N/A)数据库名称。如果在增量查询期间不同数据库中存在同名表,可以设置该项将表名限定在指定的数据库下Config Param: DATABASE_NAME
hoodie.record.merge.mode(N/A)org.apache.hudi.common.config.RecordMergeMode:决定更新记录的合并逻辑。COMMIT_TIME_ORDERING:使用事务时间合并记录,即来自较晚事务的记录会覆盖同一键的较早记录。EVENT_TIME_ORDERING:使用事件时间作为排序依据合并记录,即事件时间较大的记录会覆盖同一键上事件时间较小的记录,与事务时间无关。事件时间或排序字段需要由用户指定。CUSTOM:使用用户指定的自定义合并逻辑。Config Param: RECORD_MERGE_MODESince Version: 1.0.0
hoodie.record.merge.strategy.id(N/A)合并策略 ID。Hudi 会在 hoodie.write.record.merge.custom.implementation.classes 中选择具有相同合并策略 ID 的 HoodieRecordMerger 实现Config Param: RECORD_MERGE_STRATEGY_IDSince Version: 0.13.0
hoodie.table.checksum(N/A)表校验和用于防止 HDFS 上的部分写入。它作为 hoodie.properties 中的最后一项写入,并在读取表配置时用于校验。Config Param: TABLE_CHECKSUMSince Version: 0.11.0
hoodie.table.create.schema(N/A)创建表时使用的 SchemaConfig Param: CREATE_SCHEMA
hoodie.table.index.defs.path(N/A)相对于表基础路径的索引定义存储路径Config Param: RELATIVE_INDEX_DEFINITION_PATHSince Version: 1.0.0
hoodie.table.keygenerator.class(N/A)Hoodie 表的 Key Generator 类属性Config Param: KEY_GENERATOR_CLASS_NAME
hoodie.table.keygenerator.type(无)用于确定 key generator 类的 Key Generator 类型Config Param: KEY_GENERATOR_TYPESince Version: 1.0.0
hoodie.table.legacy.payload.class(无)用于标识创建表时所使用的 Payload 类的 Payload 类,现已不再使用。Config Param: LEGACY_PAYLOAD_CLASS_NAMESince Version: 1.1.0
hoodie.table.metadata.partitions(无)以逗号分隔的元数据分区列表,这些分区已完全构建完成并与数据表保持同步,可供读取方使用Config Param: TABLE_METADATA_PARTITIONSSince Version: 0.11.0
hoodie.table.metadata.partitions.inflight(无)以逗号分隔的元数据分区列表,这些分区正在构建中,尚不能供读取方使用。Config Param: TABLE_METADATA_PARTITIONS_INFLIGHTSince Version: 0.11.0
hoodie.table.name(无)用于注册到 Hive 的表名,多次运行时需保持一致。Config Param: NAME
hoodie.table.ordering.fields(无)以逗号分隔、用于记录合并比较的字段。默认情况下,当两条记录的 key 相同时,会选取排序字段值最大的记录(由 Object.compareTo(..) 决定)。如果配置了多个字段,则先比较第一个字段;若第一个字段的值相同,再比较第二个字段,依此类推。Config Param: ORDERING_FIELDS
hoodie.table.partial.update.mode(无)设置此属性后,将定义当记录不完整时两个版本的记录如何合并Config Param: PARTIAL_UPDATE_MODESince Version: 1.1.0
hoodie.table.partition.fields(无)以逗号分隔的字段名,用于对表进行分区。这些字段名中还包含自定义 key generator 所使用的分区类型Config Param: PARTITION_FIELDS
hoodie.table.precombine.field(N/A)实际写入前用于 preCombining 的字段,以逗号分隔。默认情况下,当两条记录的键值相同时,会通过 Object.compareTo(..) 取 precombine 字段值最大的那条。如果配置了多个字段,则先比较第一个字段;若第一个字段的值相同,再比较第二个字段,以此类推。Config Param: PRECOMBINE_FIELD
hoodie.table.recordkey.fields(N/A)用于唯一标识表的列。这些字段的拼接值被用作 HoodieKey 的记录键组成部分。Config Param: RECORDKEY_FIELDS
hoodie.table.secondary.indexes.metadata(N/A)二级索引的元数据Config Param: SECONDARY_INDEXES_METADATASince Version: 0.13.0
hoodie.timeline.layout.version(N/A)表所使用的时间线(timeline)版本。Config Param: TIMELINE_LAYOUT_VERSION
hoodie.archivelog.foldermeta 文件夹下用于存放归档时间线 instants 的归档路径。Config Param: ARCHIVELOG_FOLDER
hoodie.bootstrap.index.classorg.apache.hudi.common.bootstrap.index.hfile.HFileBootstrapIndex用于将基础文件映射到包含实际数据的 bootstrap 基础文件的实现类。Config Param: BOOTSTRAP_INDEX_CLASS_NAME
hoodie.bootstrap.index.enabletrue该表是否为带有 bootstrap 基础数据及映射索引定义的 bootstrap 表,默认为 true。Config Param: BOOTSTRAP_INDEX_ENABLE
hoodie.bootstrap.index.typeHFILEbootstrap 索引类型,用于决定采用哪种实现将基础文件映射到包含实际数据的 bootstrap 基础文件。Config Param: BOOTSTRAP_INDEX_TYPESince Version: 1.0.0
hoodie.datasource.write.hive_style_partitioningfalse标识是否使用 Hive 风格分区的开关。设置为 true 时,分区文件夹的名称遵循 <partition_column_name>=<partition_value> 格式。默认为 false(分区文件夹的名称仅包含分区值)Config Param: HIVE_STYLE_PARTITIONING_ENABLE
hoodie.partition.metafile.use.base.formatfalse如果为 true,分区元文件将以与该数据集的基础文件(例如 Parquet / ORC)相同的格式保存。如果为 false(默认值),分区元文件将以 properties 文件的形式保存。Config Param: PARTITION_METAFILE_USE_BASE_FORMAT
hoodie.populate.meta.fieldstrue启用时,会填充所有元字段。禁用时,不会填充任何元字段,增量查询将无法工作。此配置仅用于批处理场景下的仅追加/不可变数据。Config Param: POPULATE_META_FIELDS
hoodie.table.base.file.formatPARQUET用于存储所有基础文件数据的基础文件格式。Config Param: BASE_FILE_FORMAT
hoodie.table.cdc.enabledfalse启用后,会在必要时持久化变更数据,并可作为 CDC 查询模式进行查询。Config Param: CDC_ENABLEDSince Version: 0.13.0
hoodie.table.cdc.supplemental.logging.modeDATA_BEFORE_AFTERorg.apache.hudi.common.table.cdc.HoodieCDCSupplementalLoggingMode:变更日志捕获的补充日志模式。补充日志用于加速变更日志详情的生成。OP_KEY_ONLY:仅在补充日志中保留记录键,因此读取方需要自行推断更新前镜像(before image)和更新后镜像(after image)。DATA_BEFORE:在补充日志中保留更新前镜像,因此读取方需要自行推断更新后镜像。DATA_BEFORE_AFTER(默认值):在补充日志中同时保留更新前镜像和更新后镜像,读取方可以直接根据日志生成详情。Config Param: CDC_SUPPLEMENTAL_LOGGING_MODESince Version: 0.13.0
hoodie.table.formatnative写入表时使用的表格式名称。Config Param: TABLE_FORMAT
hoodie.table.initial.versionNINE表创建时的初始版本。用于升级/降级操作,以确定该表经历过哪些升级/降级路径。仅在表初次设置时配置。Config Param: INITIAL_VERSIONSince Version: 1.0.0
hoodie.table.log.file.formatHOODIE_LOG增量日志(delta log)使用的日志格式。Config Param: LOG_FILE_FORMAT
hoodie.table.multiple.base.file.formats.enable false 当设置为 true 时,表可以支持读取和写入多种基础文件格式。Config Param: MULTIPLE_BASE_FILE_FORMATS_ENABLESince Version: 1.0.0
hoodie.table.timeline.timezone LOCAL 用户可以设置 hoodie 提交时间线的时区,例如 utc、local 等。local 为默认值。Config Param: TIMELINE_TIMEZONE
hoodie.table.type COPY_ON_WRITE 底层数据的表类型。Config Param: TYPE
hoodie.table.version NINE 表的版本号,用于在不同发布版本之间执行升级/降级步骤,以处理可能存在破坏性变更或向后兼容的变更。Config Param: VERSION
hoodie.timeline.history.path history 位于 meta 文件夹下的路径,用于存储时间线历史。Config Param: TIMELINE_HISTORY_PATH
hoodie.timeline.path timeline 位于 meta 文件夹下的路径,用于存储时间线瞬时(instant)。Config Param: TIMELINE_PATH
Spark Datasource 配置
这些配置用于控制 Hudi Spark Datasource,提供定义键/分区、选择写入操作、指定记录合并方式以及选择查询类型以进行读取的能力。
读取选项
通过 read.format.option(...) 读取表时有用的选项。
配置名称默认值描述
hoodie.datasource.read.begin.instanttime (N/A) 当 hoodie.datasource.query.type 设置为 incremental 时必需。表示开始增量拉取数据的完成时间。此处的完成时间不一定对应时间线上的瞬时(instant)。完成时间 >= START_COMMIT 的新写入数据将被获取。例如:'20170901080000' 将获取 2017 年 9 月 1 日上午 08:00 之后写入的所有新数据。Config Param: START_COMMITSince Version: 0.9.0
hoodie.datasource.read.end.instanttime (N/A) 当 hoodie.datasource.query.type 设置为 incremental 时使用。表示用于限制增量获取数据的完成时间。未指定时,默认采用时间线上的最新提交完成时间。指定后,完成时间 <= END_COMMIT 的新写入数据将被获取。指定开始和结束完成时间更适合时间点类型查询。Config Param: END_COMMITSince Version: 0.9.0
hoodie.datasource.read.incr.table.version (N/A)增量读取时所假定的表版本Config Param: INCREMENTAL_READ_TABLE_VERSIONSince Version: 1.0.0
hoodie.datasource.read.streaming.table.version (N/A)流式读取时所假定的表版本Config Param: STREAMING_READ_TABLE_VERSIONSince Version: 1.0.0
hoodie.datasource.write.precombine.field (N/A)在实际写入之前用于 preCombine 操作的字段列表,以逗号分隔。当两条记录的 key 值相同时,我们会根据 precombine 字段选出值较大的那条记录,比较依据为 Object.compareTo(..)。对于多个字段,若第一个 key 的比较结果相同,则继续比较第二个 key,以此类推。该配置用于合并同一批次内的记录,也用于以事件时间(event time)合并模式进行合并Config Param: READ_PRE_COMBINE_FIELD
hoodie.datasource.query.type snapshot 需要以何种方式读取数据:incremental 模式(读取某个 instantTime 以来的新数据)、read_optimized 模式(基于基础文件获取最新视图)或 snapshot 模式(通过合并基础文件和日志文件(如有)获取最新视图)Config Param: QUERY_TYPESince Version: 0.9.0
写入选项
你可以直接通过 options() 或 option(k,v) 方法传入任意 WriteClient 级别的配置。
inputDF.write()
.format("org.apache.hudi")
.options(clientOpts) // any of the Hudi client opts can be passed in as well
.option(DataSourceWriteOptions.RECORDKEY_FIELD_OPT_KEY(), "_row_key")
.option(DataSourceWriteOptions.PARTITIONPATH_FIELD_OPT_KEY(), "partition")
.option(HoodieTableConfig.ORDERING_FIELDS(), "timestamp")
.option(HoodieWriteConfig.TABLE_NAME, tableName)
.mode(SaveMode.Append)
.save(basePath);用于通过 write.format.option(...) 写入表的选项
配置名称默认值描述
hoodie.datasource.hive_sync.mode(无)Hive 操作所选的模式。有效值为 hms、jdbc 和 hiveql。Config Param: HIVE_SYNC_MODE
hoodie.datasource.write.partitionpath.field(无)分区路径字段。用作 HoodieKey 中 partitionPath 组件的值。实际值通过调用 .toString() 获取。Config Param: PARTITIONPATH_FIELD
hoodie.datasource.write.precombine.field(无)以逗号分隔的字段列表,用于在实际写入之前进行 preCombining。当两条记录的键值相同时,我们会选择 precombine 字段值最大的那条记录,由 Object.compareTo(..) 判定。对于多个字段,如果第一个键的比较结果相同,则继续比较第二个键,依此类推。此配置用于合并同一批次内的记录,也用于以事件时间合并模式进行合并。Config Param: ORDERING_FIELDS
hoodie.datasource.write.precombine.field(无)以逗号分隔的字段列表,用于在实际写入之前进行 preCombining。当两条记录的键值相同时,我们会选择 precombine 字段值最大的那条记录,由 Object.compareTo(..) 判定。对于多个字段,如果第一个键的比较结果相同,则继续比较第二个键,依此类推。此配置用于合并同一批次内的记录,也用于以事件时间合并模式进行合并。Config Param: PRECOMBINE_FIELD
hoodie.datasource.write.recordkey.field(无)记录键字段。用作 HoodieKey 中 recordKey 组件的值。实际值将通过对字段值调用 .toString() 获取。可以使用点号表示法指定嵌套字段,例如:a.b.cConfig Param: RECORDKEY_FIELD
hoodie.datasource.write.secondarykey.column(无)构成辅助键组件的列。实际值将通过对字段值调用 .toString() 获取。可以使用点号表示法指定嵌套字段,例如:a.b.cConfig Param: SECONDARYKEY_COLUMN_NAME
hoodie.write.record.merge.mode(N/A)org.apache.hudi.common.config.RecordMergeMode:决定更新合并的逻辑。COMMIT_TIME_ORDERING:使用事务时间合并记录,即较晚事务的记录会覆盖相同键的较早记录。EVENT_TIME_ORDERING:使用事件时间作为排序依据来合并记录,即事件时间较大的记录会覆盖相同键上事件时间较小的记录,与事务时间无关。事件时间或排序字段需要由用户指定。CUSTOM:使用用户指定的自定义合并逻辑。Config Param: RECORD_MERGE_MODESince Version: 1.0.0
hoodie.clustering.async.enabledfalse在表发生插入时,异步运行异步整理(clustering)服务。Config Param: ASYNC_CLUSTERING_ENABLESince Version: 0.7.0
hoodie.clustering.inlinefalse开启内联整理(inline clustering)——每次写操作完成后都会执行整理。Config Param: INLINE_CLUSTERING_ENABLESince Version: 0.7.0
hoodie.datasource.hive_sync.enablefalse设置为 true 时,将表注册/同步到 Apache Hive metastore。Config Param: HIVE_SYNC_ENABLED
hoodie.datasource.hive_sync.jdbcurljdbc:hive2://localhost:10000Hive metastore 的 URLConfig Param: HIVE_URL
hoodie.datasource.hive_sync.metastore.uristhrift://localhost:9083Hive metastore 的 URLConfig Param: METASTORE_URIS
hoodie.datasource.meta.sync.enablefalse启用将 Hudi 表与外部元数据存储或数据目录进行同步。Config Param: META_SYNC_ENABLED
hoodie.datasource.write.hive_style_partitioningfalse用于指示是否使用 Hive 风格分区的标志。如果设置为 true,分区目录的名称遵循 <partition_column_name>=<partition_value> 格式。默认为 false(分区目录的名称仅为分区值)。Config Param: HIVE_STYLE_PARTITIONING
hoodie.datasource.write.operationupsert写操作是执行 upsert、insert 还是 bulk_insert。使用 bulk_insert 将新数据加载到表中,之后再使用 upsert/insert。bulk insert 使用基于磁盘的写入路径,无需缓存即可扩展以加载大型输入。Config Param: OPERATIONSince Version: 0.9.0
hoodie.datasource.write.table.typeCOPY_ON_WRITE本次写入的底层数据表类型。该类型在多次写入之间不能更改。Config Param: TABLE_TYPESince Version: 0.9.0
Flink SQL 配置
这些配置用于控制 Hudi Flink SQL source/sink 连接器,可定义记录键、选择写入操作、指定记录合并方式、启用/禁用异步 compaction 或选择读取的查询类型。
Flink 选项
使用 SQL 的 Flink 作业可以通过 WITH 子句中的选项进行配置。实际的数据源级配置列在下方。
配置名称默认值描述
hoodie.database.name(无)要注册到 Hive metastore 的数据库名称Config Param: DATABASE_NAME
hoodie.datasource.write.recordkey.field(无)记录键字段。该值将用作 HoodieKey 的 recordKey 组件。实际值通过对字段值调用 .toString() 获得。可以使用点号表示法指定嵌套字段,例如:a.b.cConfig Param: RECORD_KEY_FIELD
hoodie.table.name(无)要注册到 Hive metastore 的表名Config Param: TABLE_NAME
ordering.fields(无)记录合并时使用的字段列表,以逗号分隔。当两条记录的键值相同时,我们会选择排序字段值最大的那条,由 Object.compareTo(..) 确定。对于多个字段,如果第一个键的比较结果相同,则继续比较第二个键,依此类推。配置 precombine.field 现已废弃,请改用 ordering.fields。Config Param: ORDERING_FIELDS
path(无)目标 hoodie 表的基础路径。如果路径不存在则会创建该路径,否则 Hoodie 表需要已成功初始化Config Param: PATH
read.commits.limit(N/A)每次即时检查允许读取的最大提交数;如果是流式读取,则每秒平均读取的即时数为 'read.commits.limit'/'read.streaming.check-interval',默认不限制Config Param: READ_COMMITS_LIMIT
read.end-commit(N/A)读取的结束提交即时,提交时间格式应为 'yyyyMMddHHmmss'Config Param: READ_END_COMMIT
read.start-commit(N/A)读取的起始提交即时,提交时间格式应为 'yyyyMMddHHmmss',流式读取时默认从最新的即时开始读取Config Param: READ_START_COMMIT
archive.max_commits50将较旧的提交归档到顺序日志之前允许保留的最大提交数,默认 50Config Param: ARCHIVE_MAX_COMMITS
archive.min_commits40将较旧的提交归档到顺序日志之前必须保留的最小提交数,默认 40Config Param: ARCHIVE_MIN_COMMITS
cdc.enabledfalse启用后,会在必要时持久化变更数据,并可通过 CDC 查询模式进行查询Config Param: CDC_ENABLED
cdc.supplemental.logging.modeDATA_BEFORE_AFTER设置为 'op_key_only' 时仅持久化 'op' 和记录键;设置为 'data_before' 时会额外持久化 'before' 镜像;设置为 'data_before_after' 时会额外持久化 'before' 和 'after' 镜像。Config Param: SUPPLEMENTAL_LOGGING_MODE
changelog.enabledfalse是否保留所有中间变更。启用后,我们会尽量保留一条记录的所有变更:1). 接收端接受 UPDATE_BEFORE 消息;2). 数据源尝试发出一条记录的每一次变更。由于压缩作业最终会将一条记录的所有变更合并为一条,因此该语义为尽力而为。默认为 false,即采用 UPSERT 语义Config Param: CHANGELOG_ENABLED
clean.async.enabledtrue是否在产生新提交时立即清理旧的提交,默认启用Config Param: CLEAN_ASYNC_ENABLED
clean.retain_commits30要保留的提交数量。因此数据将保留 num_of_commits * time_between_commits(按计划执行)的时间长度。这也直接决定了你可以对该表进行增量拉取的范围,默认 30Config Param: CLEAN_RETAIN_COMMITS
clustering.async.enabledfalse异步 Clustering,默认 falseConfig Param: CLUSTERING_ASYNC_ENABLED
clustering.plan.strategy.small.file.limit600小于该大小的文件将作为 Clustering 的候选对象,默认 600 MBConfig Param: CLUSTERING_PLAN_STRATEGY_SMALL_FILE_LIMIT
clustering.plan.strategy.target.file.max.bytes1073741824每个分组可以产生 'N'(CLUSTERING_MAX_GROUP_SIZE/CLUSTERING_TARGET_FILE_SIZE)个输出文件组,默认 1 GBConfig Param: CLUSTERING_PLAN_STRATEGY_TARGET_FILE_MAX_BYTES
compaction.async.enabledtrue异步 Compaction,MOR 默认启用Config Param: COMPACTION_ASYNC_ENABLED
compaction.delta_commits5触发 Compaction 所需的最大增量提交数,默认 5 次提交Config Param: COMPACTION_DELTA_COMMITS
hive_sync.enabledfalse异步将 Hive 元数据同步到 HMS,默认 falseConfig Param: HIVE_SYNC_ENABLED
hive_sync.jdbc_urljdbc:hive2://localhost:10000用于 Hive 同步的 Jdbc URL,默认 'jdbc:hive2://localhost:10000'Config Param: HIVE_SYNC_JDBC_URL
hive_sync.metastore.uris用于 Hive 同步的 Metastore URI,默认 ''Config Param: HIVE_SYNC_METASTORE_URIS
hive_sync.modeHMSHive 操作的模式选择。有效值为 hms、jdbc 和 hiveql,默认 'hms'Config Param: HIVE_SYNC_MODE
hoodie.datasource.query.typesnapshot决定数据文件的读取方式:1) Snapshot 模式(基于行存与列存数据获取最新视图);2) 增量模式(读取某个 instantTime 之后的新数据);3) Read Optimized 模式(基于列存数据获取最新视图)。默认值:snapshotConfig Param: QUERY_TYPE
hoodie.datasource.write.hive_style_partitioningfalse是否使用 Hive 风格分区。若设置为 true,分区目录的名称将遵循 <partition_column_name>=<partition_value> 格式。默认为 false(分区目录名称仅为分区值)Config Param: HIVE_STYLE_PARTITIONING
hoodie.datasource.write.partitionpath.field分区路径字段。用作 HoodieKey 的 partitionPath 组件的值。实际值通过调用 .toString() 获得,默认 ''Config Param: PARTITION_PATH_FIELD
hoodie.table.services.enabledtrue总开关,用于禁用所有表服务,包括 archive、clean、compact、cluster 等。Config Param: TABLE_SERVICES_ENABLED
index.typeFLINK_STATEFlink 写入作业的索引类型,默认使用基于 state 的索引。Config Param: INDEX_TYPE
lookup.asyncfalse是否启用异步 lookup join。Config Param: LOOKUP_ASYNC
lookup.async-thread-number16lookup 异步操作的线程数。Config Param: LOOKUP_ASYNC_THREAD_NUMBER
lookup.join.cache.ttlPT1Hlookup join 中构建表的缓存 TTL(例如 10min)。Config Param: LOOKUP_JOIN_CACHE_TTL
lookup.join.cache.typeheaplookup join 缓存的存储后端。可选值:'heap'(默认)将所有维度表行存储在 JVM 堆内存中(大表可能导致 OutOfMemoryError);'rocksdb' 将行存储在本地磁盘的嵌入式 RocksDB 实例中(堆外存储),以额外的序列化开销为代价避免 OOM。Config Param: LOOKUP_JOIN_CACHE_TYPE
lookup.join.rocksdb.path/var/folders/vh/zgs02hf51dn7r08pbl5m2jc00000gn/T//hudi-lookup-rocksdb当 'lookup.join.cache.type' 设置为 'rocksdb' 时,用于存储 RocksDB 数据的本地目录路径。每个 task manager 会在该路径下创建一个唯一的子目录。lookup 函数关闭时该目录会被清理。Config Param: LOOKUP_JOIN_ROCKSDB_PATH
metadata.compaction.async.enabledtrue是否为元数据表启用异步 compaction,若为 true,元数据表的 compaction 将在 compaction 流水线中执行,默认启用。Config Param: METADATA_COMPACTION_ASYNC_ENABLED
metadata.compaction.delta_commits10触发元数据表 compaction 的最大 delta commit 数量,默认 10Config Param: METADATA_COMPACTION_DELTA_COMMITS
metadata.enabledtrue启用内部元数据表,用于提供表元数据服务(如 level 文件列表),默认启用Config Param: METADATA_ENABLED
read.source-v2.enabledfalse是否使用 Flink FLIP27 新 source 来消费数据文件。Config Param: READ_SOURCE_V2_ENABLED
read.splits.limit2147483647每次 instant 检查时允许读取的最大 split 数量。如果是流式读取,则每秒平均读取的 split 数量为 'read.splits.limit'/'read.streaming.check-interval',默认情况下不限制。Config Param: READ_SPLITS_LIMIT
read.streaming.enabledfalse是否以流式 source 的方式进行读取,默认为 false。Config Param: READ_AS_STREAMING
read.streaming.skip_insertoverwritefalse是否跳过 insert overwrite 的 instant,以避免在流式读取时读取 insert overwrite 操作的基础文件。在流式场景中,insert overwrite 通常用于修复数据,这里可以控制下游流式读取的可见性。Config Param: READ_STREAMING_SKIP_INSERT_OVERWRITE
table.typeCOPY_ON_WRITE要写入的表类型:COPY_ON_WRITE 或 MERGE_ON_READ。Config Param: TABLE_TYPE
write.insert.partitioner.class.name要使用的 Insert 分区器,旨在多级分区场景下重新均衡记录并减少小文件数量。例如 dt/hour/eventID。当前支持 org.apache.hudi.sink.partitioner.GroupedInsertPartitioner。Config Param: INSERT_PARTITIONER_CLASS_NAME
write.insert.partitioner.default_parallelism_per_partition30使用 GroupedInsertPartitioner 时,每个分区中使用的并行度。Config Param: DEFAULT_PARALLELISM_PER_PARTITION
write.operationupsert此次写入应执行的写操作。Config Param: OPERATION
write.parquet.max.file.size120Hudi 写入阶段生成的 Parquet 文件的目标大小。对于 DFS,为获得最佳性能,该值需要与底层文件系统的块大小保持一致。Config Param: WRITE_PARQUET_MAX_FILE_SIZE
写客户端配置
在内部,Hudi 数据源使用基于 RDD 的 HoodieWriteClient API 实际执行对存储的写入。这些配置可对文件大小、压缩、并行度、compaction、写入 schema、cleaning 等底层细节进行深度控制。尽管 Hudi 提供了合理的默认值,但为了针对特定工作负载进行优化,有时仍需调整这些配置。
通用配置
以下配置集在 Hudi 中通用。
配置名称默认值描述
hoodie.base.path(无)湖仓存储上的基础路径,所有表数据都存储在其下。务必显式地加上存储协议前缀(例如 hdfs://、s3:// 等)。Hudi 将关于提交、保存点、清理审计日志等的所有主要元数据存储在该基础路径目录下的 .hoodie 目录中。Config Param: BASE_PATH
元数据配置
Hudi 元数据表所使用的配置。该表维护给定 Hudi 表的元数据(例如文件列表),以避免查询期间访问云存储带来的开销。
配置名称默认值描述
hoodie.index.name(无)表达式索引的名称。该名称也用作元数据表中的分区名称。Config Param: SECONDARY_INDEX_NAMESince Version: 1.0.0
hoodie.index.name(无)表达式索引的名称。该名称也用作元数据表中的分区名称。Config Param: EXPRESSION_INDEX_NAMESince Version: 1.0.0
hoodie.metadata.index.drop(无)删除指定的索引。其值应为要删除的索引名称。你可以使用 SHOW INDEXES 命令查看索引名称。索引名称以以下某个名称开头或与其完全匹配:files、column_stats、bloom_filters、record_index、expr_index_、secondary_index_、partition_stats、filesConfig Param: DROP_METADATA_INDEXSince Version: 1.0.1
hoodie.expression.index.typeCOLUMN_STATS表达式索引的类型。如果命令中没有函数和表达式,则默认为 column_stats。有效选项可以是 BITMAP、COLUMN_STATS、LUCENE 等。如果未提供 index_type,且命令中包含函数或表达式,则会创建一个基于列统计信息的表达式索引。Config Param: EXPRESSION_INDEX_TYPESince Version: 1.0.0
hoodie.metadata.enabletrue启用内部元数据表,该表提供层级文件列表等表元数据Config Param: ENABLESince Version: 0.7.0
hoodie.metadata.index.bloom.filter.enablefalse对元数据表下的用户数据文件的布隆过滤器建立索引。启用后,元数据表将包含一个用于存储布隆过滤器索引的分区,并在索引查找时使用。Config Param: ENABLE_METADATA_INDEX_BLOOM_FILTERSince Version: 0.11.0
hoodie.metadata.index.column.stats.enablefalse对元数据表键查找下的用户数据文件的列范围建立索引。启用后,元数据表将包含一个用于存储列范围的分区,并在索引查找时用于文件裁剪。对于 Spark 引擎,该配置默认为 true(启用),覆盖基础默认值 false。对于 Flink 和 Java 引擎,默认仍为 false。Config Param: ENABLE_METADATA_INDEX_COLUMN_STATSSince Version: 0.11.0
hoodie.metadata.index.expression.enablefalse在元数据表中启用表达式索引。当此配置属性启用(true)时,Hudi 写入器会自动保持所有表达式索引与数据表一致。当禁用(false)时,所有表达式索引将被删除。请注意,单个表达式索引只能通过 Spark SQL 中的 CREATE INDEX 语句创建,并通过 DROP INDEX 语句删除。Config Param: EXPRESSION_INDEX_ENABLE_PROPSince Version: 1.0.0
hoodie.metadata.index.secondary.enabletrue在元数据表中启用二级索引。当此配置属性启用(true)时,Hudi 写入器会自动保持所有二级索引与数据表一致。当禁用(false)时,所有二级索引将被删除。请注意,单个二级索引只能通过 Spark SQL 中的 CREATE INDEX 语句创建,并通过 DROP INDEX 语句删除。Config Param: SECONDARY_INDEX_ENABLE_PROPSince Version: 1.0.0
存储配置
控制基础文件和日志文件写入、大小调整及读取相关方面的配置。
配置名称默认值描述
hoodie.hfile.writes.allow.duplicatesfalse引导 RI 时,如果主数据集中包含重复记录,引导作业将会失败。为避免该失败并允许携带重复记录引导 RI,可以将此配置设置为 true。需要注意的是,没有确定性的方式来指定这些记录中哪些会被摄取到 RI 中。Config Param: HFILE_WRITER_TO_ALLOW_DUPLICATES
hoodie.parquet.compression.codecgzipParquet 文件的压缩编解码器Config Param: PARQUET_COMPRESSION_CODEC_NAME
hoodie.parquet.max.file.size125829120Hudi 写入阶段生成的 Parquet 文件的目标大小(字节)。对于 DFS,该值需要与底层文件系统的块大小保持一致,以获得最佳性能。Config Param: PARQUET_MAX_FILE_SIZE
归档配置
控制归档的配置。
配置名称默认值描述
hoodie.keep.max.commits30归档服务会在每次写入后将时间线中较旧的条目移动到归档日志中,以便在表规模不断增长的同时保持元数据开销恒定。该配置控制活动时间线中保留的最大 instant 数量。Config Param: MAX_COMMITS_TO_KEEP
hoodie.keep.min.commits20与 hoodie.keep.max.commits 类似,但控制的是活动时间线中保留的最小 instant 数量。Config Param: MIN_COMMITS_TO_KEEP
引导(Bootstrap)配置
控制如何首次将现有表引导(bootstrap)为 Hudi 表的配置。引导操作可以灵活地避免在使用 Hudi 之前复制数据,并支持现有的写入器与新的 Hudi 写入器并行运行,以便验证迁移过程。
配置名称默认值描述
hoodie.bootstrap.base.path(无)需要被引导为 Hudi 表的数据集的基础路径Config Param: BASE_PATHSince Version: 0.6.0
清理(Clean)配置
清理(回收较旧的/不再使用的文件组/切片)。
配置名称默认值描述
hoodie.clean.async.enabledfalse仅在 hoodie.clean.automatic 开启时生效。开启后,清理器将与写入过程异步运行,从而可以提升整体写入性能。Config Param: ASYNC_CLEAN
hoodie.clean.commits.retained10使用 KEEP_LATEST_COMMITS 清理策略时,需要保留而不进行清理的提交数量。保留周期为 num_of_commits * time_between_commits(按计划调度)。这也直接决定了该表对增量查询所能支持的数据保留范围。Config Param: CLEANER_COMMITS_RETAINED
hoodie.prewrite.cleaner.policyNONEorg.apache.hudi.common.model.HoodiePreWriteCleanerPolicy:如果设置,则在开始新的摄取写入提交之前,强制尝试执行清理(clean)和/或回滚失败的写入。设置此项仅为确保在某个摄取写入器持续失败、始终无法完成 CLEAN 的情况下,数据文件不会在 DFS 上不断堆积。NONE(默认):不进行预写清理或回滚,默认行为。CLEAN:在开始写入前强制执行一次 CLEAN 表服务调用(同时也会回滚失败的写入)。ROLLBACK_FAILED_WRITES:仅在开始写入前回滚失败的写入。Config Param: PREWRITE_CLEANER_POLICYSince Version: 1.2.0
聚类配置
用于控制 Hudi 中聚类表服务的配置项。聚类服务通过对数据文件进行排序和尺寸调整来优化存储布局,从而提升查询性能。
配置项名称默认值描述
hoodie.clustering.async.enabledfalse启用聚类服务,在表发生插入操作时异步运行聚类。Config Param: ASYNC_CLUSTERING_ENABLESince Version: 0.7.0
hoodie.clustering.inlinefalse开启内联聚类——每次写入操作完成后都会运行聚类。Config Param: INLINE_CLUSTERINGSince Version: 0.7.0
hoodie.clustering.plan.generation.use.local.engine.contextfalse启用后,在生成聚类计划期间计算每个分区的聚类分组时,将使用本地引擎上下文(例如 Spark 中的 driver 端),而不是分布式引擎上下文。默认情况下该功能处于禁用状态,即使用分布式引擎上下文(例如在 Spark 中,每个分区的聚类分组会在单独的 Spark 任务中计算)。当聚类计划中只有少数几个分区但包含大量文件时,可启用此项,因为在 driver 端本地计算比分配 executor 资源更加节省资源。Config Param: PLAN_GENERATION_USE_LOCAL_ENGINE_CONTEXTSince Version: 1.2.0
hoodie.clustering.plan.strategy.small.file.limit314572800小于此处指定字节大小的文件将作为聚类的候选对象。Config Param: PLAN_STRATEGY_SMALL_FILE_LIMITSince Version: 0.7.0
hoodie.clustering.plan.strategy.target.file.max.bytes1073741824每个分组可以产生 'N'(CLUSTERING_MAX_GROUP_SIZE/CLUSTERING_TARGET_FILE_SIZE)个输出文件组Config Param: PLAN_STRATEGY_TARGET_FILE_MAX_BYTESSince Version: 0.7.0
压缩配置
控制压缩(将日志文件合并到新的基础文件)的配置项。
配置名称默认值描述
hoodie.compact.inlinefalse设置为 true 时,每次写入后都会触发压缩服务。这种方式在运维上更简单,但会给写入路径增加额外的延迟。Config Param: INLINE_COMPACT
hoodie.compact.inline.max.delta.commits5自上次压缩以来的增量提交数量,达到该数量后会尝试调度新的压缩。此配置仅对基于提交数量的压缩触发策略生效,即 NUM_COMMITS、NUM_COMMITS_AFTER_LAST_REQUEST、NUM_AND_TIME 和 NUM_OR_TIME。Config Param: INLINE_COMPACT_NUM_DELTA_COMMITS
错误表配置
错误表所需的配置项。
配置名称默认值描述
hoodie.errortable.base.path(无)错误表的基础路径,所有错误记录都将存储在该路径下。Config Param: ERROR_TABLE_BASE_PATH
hoodie.errortable.target.table.name(无)错误表所使用的表名。Config Param: ERROR_TARGET_TABLE
hoodie.errortable.write.class(无)负责处理错误表写入的类。此配置用于配置自定义的 Error Table Writer 实现。请将自定义错误表写入器的完整类名作为该配置的值。Config Param: ERROR_TABLE_WRITE_CLASS
hoodie.errortable.enablefalse用于启用错误表的配置。如果启用该配置,DeltaStreamer 中所有处理出错的记录都会被传输到错误表。Config Param: ERROR_TABLE_ENABLED
hoodie.errortable.insert.shuffle.parallelism200用于设置插入洗牌并行度的配置。该配置与 hoodie.insert.shuffle.parallelism 类似,但作用于错误表。Config Param: ERROR_TABLE_INSERT_PARALLELISM_VALUE
hoodie.errortable.source.rdd.persistfalse启用该配置后,会将 sourceRDD 持久化到磁盘,有助于加快数据表 + 错误表写入 DAG 的处理速度Config Param: ERROR_TABLE_PERSIST_SOURCE_RDD
hoodie.errortable.upsert.shuffle.parallelism200用于设置 upsert shuffle 并行度的配置。该配置与 hoodie.upsert.shuffle.parallelism 类似,但作用于错误表。Config Param: ERROR_TABLE_UPSERT_PARALLELISM_VALUE
hoodie.errortable.validate.recordcreation.enabletrue由于键生成失败或其他问题而创建失败的记录将被发送到错误表Config Param: ERROR_ENABLE_VALIDATE_RECORD_CREATIONSince Version: 0.15.0
hoodie.errortable.validate.targetschema.enablefalse与目标 Schema 不匹配的记录将被发送到错误表。Config Param: ERROR_ENABLE_VALIDATE_TARGET_SCHEMA
hoodie.errortable.write.failure.strategyROLLBACK_COMMIT该配置指定错误表写入失败时的失败处理策略。可取值之一为 - [ROLLBACK_COMMIT(回滚触发错误事件所对应的基础表写入提交),LOG_ERROR(记录错误日志,但基础表写入仍然成功)]Config Param: ERROR_TABLE_WRITE_FAILURE_STRATEGY
hoodie.errortable.write.union.enablefalse写入时启用错误表与数据表的合并(union),以提升提交性能。默认禁用,即数据表和错误表的写入是顺序执行的Config Param: ENABLE_ERROR_TABLE_WRITE_UNIFICATION
写入配置
控制 Hudi 表写入行为的配置。这些配置可以直接从更上层的框架(例如 Spark datasource、Flink sink)和工具(例如 Hudi Streamer)传递下来。
配置名称默认值描述
hoodie.base.path(无)湖存储上的基础路径,所有表数据都存储在其下。请务必显式加上存储方案前缀(例如 hdfs://、s3:// 等)。Hudi 将所有关于提交、保存点(savepoint)、清理审计日志等的主要元数据都存储在该基础路径下的 .hoodie 目录中。Config Param: BASE_PATH
hoodie.datasource.write.precombine.field(N/A)以逗号分隔的字段列表,用于在实际写入之前进行 preCombining。当两条记录的键值相同时,我们会选取 precombine 字段值最大的那条记录,由 Object.compareTo(..) 判定。对于多个字段,如果第一个键的比较结果相同,则继续比较第二个键,依此类推。该配置用于合并同一批次内的记录,也用于以事件时间合并模式进行合并。Config Param: PRECOMBINE_FIELD_NAME
hoodie.table.name(N/A)用于向 HMS 等元存储注册的表名。多次运行时需保持一致。Config Param: TBL_NAME
hoodie.write.record.merge.mode(N/A)org.apache.hudi.common.config.RecordMergeMode:决定更新的合并逻辑。COMMIT_TIME_ORDERING:使用事务时间合并记录,即来自较晚事务的记录会覆盖相同键的较早记录。EVENT_TIME_ORDERING:使用事件时间作为合并记录的排序依据,即事件时间较大的记录会覆盖相同键上事件时间较小的记录,与事务时间无关。事件时间或排序字段需要由用户指定。CUSTOM:使用用户指定的自定义合并逻辑。Config Param: RECORD_MERGE_MODESince Version: 1.0.0
hoodie.block.writes.on.speculative.executiontrue启用时(默认),如果在创建客户端期间 Spark 开启了推测执行,则会抛出异常。这可以防止推测执行器重复写入导致潜在的数据损坏。只有在了解开启 Spark 推测执行的风险时,才应将其设置为 false。Config Param: BLOCK_WRITES_ON_SPECULATIVE_EXECUTIONSince Version: 0.14.0
hoodie.fail.job.on.duplicate.data.file.detectionfalse如果启用该配置,检测到无效文件时整个作业将失败。Config Param: FAIL_JOB_ON_DUPLICATE_DATA_FILE_DETECTION
hoodie.write.auto.upgradetrue如果启用,当当前表版本低于指定的写入表版本时,写入器会自动将表升级到该版本。Config Param: AUTO_UPGRADE_VERSIONSince Version: 1.0.0
hoodie.write.can.ignore.post.commit.failuresfalse当该配置为 true 时,提交后操作中的任何失败都会被忽略,不会导致应用终止。Config Param: CAN_IGNORE_POST_COMMIT_FAILURES
hoodie.write.concurrency.modeSINGLE_WRITERorg.apache.hudi.common.model.WriteConcurrencyMode:写操作的并发模式。SINGLE_WRITER(默认):表只能有一个活跃写入者,可最大化吞吐量。OPTIMISTIC_CONCURRENCY_CONTROL:多个写入者可以同时操作该表,并通过锁进行延迟冲突解决。这意味着当多个写入者写入同一文件组时,只有一个写入者能成功。NON_BLOCKING_CONCURRENCY_CONTROL:多个写入者可以同时操作该表,并进行非阻塞冲突解决。写入者可以写入同一文件组,冲突由查询读取器和压缩器自动解决。Config Param: WRITE_CONCURRENCY_MODE
hoodie.write.ignore.failedtrue用于指示是否忽略任何非异常错误(例如写状态错误)的标志。出于向后兼容性,默认为 true。Config Param: IGNORE_FAILEDSince Version:
hoodie.write.table.version9该写入者将表存储所使用的表版本。这应与当前表版本保持一致。Config Param: WRITE_TABLE_VERSIONSince Version: 1.0.0
锁配置
这些配置用于控制 Hudi 表的多个写入者之间进行并发控制所需的锁机制。Hudi 自身表服务之间的并发由内部自动管理。
通用锁配置
配置名称默认值描述
hoodie.write.lock.heartbeat_interval_ms60000以毫秒为单位的心跳间隔,用于发送心跳以表明持有锁的 hive 客户端。Config Param: LOCK_HEARTBEAT_INTERVAL_MSSince Version: 0.15.0
键生成器配置
Hudi 会维护键(记录键 + 分区路径)以唯一标识特定记录。这些配置允许开发人员设置从传入记录中提取这些键的 Key generator 类。
键生成器选项
配置名称默认值描述
hoodie.datasource.write.partitionpath.field(无)分区路径字段。用作 HoodieKey 中 partitionPath 组件的值。实际值通过调用 .toString() 获得Config Param: PARTITIONPATH_FIELD_NAME
hoodie.datasource.write.recordkey.field(N/A)记录键字段。用作 HoodieKey 的 recordKey 组件的值。实际值通过对字段值调用 .toString() 获得。可以使用点号表示法指定嵌套字段,例如:a.b.cConfig Param: RECORDKEY_FIELD_NAME
hoodie.datasource.write.secondarykey.column(N/A)构成次键组件的列。实际值通过对字段值调用 .toString() 获得。可以使用点号表示法指定嵌套字段,例如:a.b.cConfig Param: SECONDARYKEY_COLUMN_NAME
hoodie.datasource.write.hive_style_partitioningfalse标识是否使用 Hive 风格分区。若设置为 true,分区目录的名称遵循 <partition_column_name>=<partition_value> 格式。默认为 false(分区目录的名称仅为分区值)Config Param: HIVE_STYLE_PARTITIONING_ENABLE
索引配置
控制索引行为的配置,索引会将传入的记录标记为插入或是对旧记录的更新。
通用索引配置
配置名称默认值描述
hoodie.expression.index.function(N/A)用于构建表达式索引的函数。Config Param: INDEX_FUNCTIONSince Version: 1.0.0
hoodie.index.name(N/A)表达式索引的名称。同时用作元数据表中的分区名称。Config Param: INDEX_NAMESince Version: 1.0.0
hoodie.table.checksum(N/A)索引定义校验和用于防止 HDFS 上的写入中断。它作为最后一项添加到 index.properties 中,并在读取表配置时用于校验。Config Param: INDEX_DEFINITION_CHECKSUMSince Version: 1.0.0
hoodie.expression.index.typeCOLUMN_STATS表达式索引的类型。如果命令中没有函数和表达式,默认为 column_stats。有效选项包括 BITMAP、COLUMN_STATS、LUCENE 等。如果未提供 index_type,且命令中包含函数或表达式,则将使用列统计信息创建表达式索引。Config Param: INDEX_TYPESince Version: 1.0.0
通用索引配置
配置名称默认值描述
hoodie.index.type(N/A)org.apache.hudi.index.HoodieIndex$IndexType:确定输入记录如何建立索引,即如何根据键查找其在现有表中的位置。Spark 引擎的默认值为 SIMPLE,Flink 和 Java 引擎的默认值为 INMEMORY。INMEMORY:在 Spark 和 Java 引擎中使用内存哈希表,在 Flink 中使用 Flink 内存状态进行索引。BLOOM:采用基于记录键构建的布隆过滤器,可选择再利用记录键范围裁剪候选文件。键的唯一性在分区内强制保证。GLOBAL_BLOOM:采用基于记录键构建的布隆过滤器,可选择再利用记录键范围裁剪候选文件。键的唯一性在整个表的所有分区间强制保证。SIMPLE:将传入的更新/删除记录与从存储中的表提取的键进行精简连接。键的唯一性在分区内强制保证。GLOBAL_SIMPLE:将传入的更新/删除记录与从存储中的表提取的键进行精简连接。键的唯一性在整个表的所有分区间强制保证。BUCKET:通过分桶哈希快速定位包含该记录的文件组,在大规模场景下尤为有利。使用 hoodie.index.bucket.engine 选择分桶引擎类型,即桶的生成方式。FLINK_STATE:基于 Flink 状态进行索引的内部配置。RECORD_INDEX:将记录键到位置的映射保存在 HUDI 元数据表中的索引。记录索引是全局索引,在整个表的所有分区间强制保证键的唯一性。支持分片以实现极高的扩展性。如果表中的键仅在每个分区内唯一,请改用 RECORD_LEVEL_INDEX。此枚举已弃用。如需记录键的全局唯一性,请使用 GLOBAL_RECORD_LEVEL_INDEX;如需记录键的分区级唯一性,请使用 RECORD_LEVEL_INDEX。GLOBAL_RECORD_LEVEL_INDEX:将记录键到位置的映射保存在 HUDI 元数据表中的索引。记录索引是全局索引,在整个表的所有分区间强制保证键的唯一性。支持分片以实现极高的扩展性。如果表中的键仅在每个分区内唯一,请改用 RECORD_LEVEL_INDEX。RECORD_LEVEL_INDEX:将记录键到位置的映射保存在 HUDI 元数据表中的索引。支持分片以实现极高的扩展性。这是一个非全局索引,键可以在分区间重复出现,因为通过该索引,分区路径与记录键的组合会唯一映射到一个位置。如果用户期望记录键在所有分区间唯一,请改用 GLOBAL_RECORD_LEVEL_INDEX。Config Param: INDEX_TYPE
hoodie.bucket.index.query.pruningtrue控制使用桶索引的表是否使用桶查询Config Param: BUCKET_QUERY_INDEX
hoodie.bucket.index.remote.partitioner.enablefalse使用远程分区器,通过集中分配分区 ID 来进行重新分区,以实现基于桶的分区,从而解决数据倾斜问题。默认为本地哈希分区器Config Param: BUCKET_PARTITIONER
元数据存储与目录同步配置
Hudi 用于将元数据同步到外部元数据存储和数据目录的配置。
通用元数据同步配置
配置名称默认值描述
hoodie.datasource.meta.sync.enablefalse启用将 Hudi 表与外部元数据存储或数据目录进行同步。Config Param: META_SYNC_ENABLED
基于 Glue 目录同步的客户端配置
控制基于 Glue 目录同步的客户端的配置。
配置名称默认值描述
hoodie.datasource.meta.sync.glue.partition_index_fields指定要在 AWS Glue 上建立索引的分区字段。字段之间用分号分隔。默认情况下,该功能启用时会对所有分区建立索引。最多可以创建三个索引,索引之间用逗号分隔。例如:col1;col2;col3,col2,col3Config Param: META_SYNC_PARTITION_INDEX_FIELDSSince Version: 0.15.0
hoodie.datasource.meta.sync.glue.partition_index_fields.enablefalse启用 AWS Glue 分区索引功能,以加速基于分区的查询模式Config Param: META_SYNC_PARTITION_INDEX_FIELDS_ENABLESince Version: 0.15.0
BigQuery 同步配置
Hudi 用于将元数据同步到 Google BigQuery 的配置。
配置名称默认值描述
hoodie.datasource.meta.sync.enablefalse启用将 Hudi 表与外部元数据存储或数据目录进行同步。Config Param: META_SYNC_ENABLED
Hive 同步配置
Hudi 用于将元数据同步到 Hive Metastore 的配置。
配置名称默认值描述
hoodie.datasource.hive_sync.mode(无)Hive 操作的模式选择。有效值为 hms、jdbc 和 hiveql。Config Param: HIVE_SYNC_MODE
hoodie.datasource.hive_sync.enablefalse设置为 true 时,将该表注册/同步到 Apache Hive 元存储。Config Param: HIVE_SYNC_ENABLED
hoodie.datasource.hive_sync.jdbcurljdbc:hive2://localhost:10000Hive 元存储 URLConfig Param: HIVE_URL
hoodie.datasource.hive_sync.metastore.uristhrift://localhost:9083Hive 元存储 URLConfig Param: METASTORE_URIS
hoodie.datasource.meta.sync.enablefalse启用 Hudi 表与外部元存储或数据目录的同步。Config Param: META_SYNC_ENABLED
全局 Hive 同步配置
Hudi 用于将元数据同步到 Hive Metastore 的全局复制配置。
配置名称默认值描述
hoodie.datasource.hive_sync.mode(无)Hive 操作的模式选择。有效值为 hms、jdbc 和 hiveql。Config Param: HIVE_SYNC_MODE
hoodie.datasource.hive_sync.enablefalse设置为 true 时,将该表注册/同步到 Apache Hive 元存储。Config Param: HIVE_SYNC_ENABLED
hoodie.datasource.hive_sync.jdbcurljdbc:hive2://localhost:10000Hive 元存储 URLConfig Param: HIVE_URL
hoodie.datasource.hive_sync.metastore.uristhrift://localhost:9083Hive 元存储 URLConfig Param: METASTORE_URIS
hoodie.datasource.meta.sync.enablefalse启用 Hudi 表与外部元存储或数据目录的同步。Config Param: META_SYNC_ENABLED
DataHub 同步配置
Hudi 用于将元数据同步到 DataHub 的配置。
配置名称默认值描述
hoodie.datasource.meta.sync.enablefalse启用 Hudi 表与外部元存储或数据目录的同步。Config Param: META_SYNC_ENABLED
指标配置
这组配置用于启用对关键 Hudi 统计数据和指标的监控与报告。
指标配置
启用 Hudi 指标的报告。Hudi 会在每次提交、清理、回滚等操作时发布指标。以下章节列出了受支持的报告器。
| 配置名称 | 默认值 | 描述 |
|---|---|---|
| hoodie.metrics.on | false | 开启/关闭指标上报。默认关闭。Config Param: TURN_METRICS_ONSince Version: 0.5.0 |
| hoodie.metrics.reporter.type | GRAPHITE | 指标上报器的类型。Config Param: METRICS_REPORTER_TYPE_VALUESince Version: 0.5.0 |
| hoodie.metricscompaction.log.blocks.on | false | 开启/关闭针对压缩提交的日志块指标上报。默认关闭。Config Param: TURN_METRICS_COMPACTION_LOG_BLOCKS_ONSince Version: 0.14.0 |
M3 指标配置
使用 M3 上报 Hudi 指标。Hudi 会在每次提交、清理、回滚等操作时发布指标。
| 配置名称 | 默认值 | 描述 |
|---|---|---|
| hoodie.metrics.m3.env | production | 用于标记环境的 M3 标签(默认为 'production'),应用于所有指标。Config Param: M3_ENVSince Version: 0.15.0 |
| hoodie.metrics.m3.host | localhost | 要连接的 M3 主机。Config Param: M3_SERVER_HOST_NAMESince Version: 0.15.0 |
| hoodie.metrics.m3.port | 9052 | 要连接的 M3 端口。Config Param: M3_SERVER_PORT_NUMSince Version: 0.15.0 |
| hoodie.metrics.m3.service | hoodie | 用于标记服务名称的 M3 标签(默认为 'hoodie'),应用于所有指标。Config Param: M3_SERVICESince Version: 0.15.0 |
| hoodie.metrics.m3.tags | 应用于所有指标的可选 M3 标签。Config Param: M3_TAGSSince Version: 0.15.0 |
Kafka Connect 配置
这组配置用于 Kafka Connect Sink Connector,以写入 Hudi 表。
Kafka Sink 连接配置
Hudi 的 Kafka Connect Sink Connector 相关配置。
| 配置名称 | 默认值 | 描述 |
|---|---|---|
| bootstrap.servers | localhost:9092 | Kafka 集群的引导服务器(bootstrap servers)。Config Param: KAFKA_BOOTSTRAP_SERVERS |
Hudi Streamer 配置
这组配置用于 Hudi Streamer 工具,该工具提供了从 DFS 或 Kafka 等不同数据源进行数据摄取的方式。
Hudi Streamer 配置
| 配置名称 | 默认值 | 描述 |
|---|---|---|
| hoodie.streamer.source.kafka.topic | (无) | Kafka 主题名称。该配置仅适用于 HoodieMultiTableStreamerConfig Param: KAFKA_TOPIC |
Hudi Streamer SQL 转换器配置
控制 Hudi Streamer 中 SQL 转换器行为的配置。
| 配置名称 | 默认值 | 描述 |
|---|---|---|
| hoodie.streamer.transformer.sql | (无) | 写入期间要执行的 SQL 查询Config Param: TRANSFORMER_SQL |
| hoodie.streamer.transformer.sql.file | (无) | 包含写入期间要执行的 SQL 脚本的文件Config Param: TRANSFORMER_SQL_FILE |
Hudi Streamer 源配置
控制源数据读取行为的配置。
DFS 路径选择器配置
控制 Hudi Streamer 中 DFS 源的路径选择器行为的配置。
| 配置名称 | 默认值 | 描述 |
|---|---|---|
| hoodie.streamer.source.dfs.root | (无) | DFS 上源数据的根路径Config Param: ROOT_INPUT_PATH |
Hudi 增量源配置
控制 Hudi Streamer 中从 Hudi 表作为源进行增量拉取行为的配置。
| 配置名称 | 默认值 | 描述 |
|---|---|---|
| hoodie.streamer.source.hoodieincr.path | (无) | 源 Hudi 表的基础路径Config Param: HOODIE_SRC_BASE_PATH |
Kafka 源配置
控制 Hudi Streamer 中 Kafka 源行为的配置。
| 配置名称 | 默认值 | 描述 |
|---|---|---|
| hoodie.streamer.source.kafka.topic | (无) | Kafka 主题名称。Config Param: KAFKA_TOPIC_NAME |
| hoodie.streamer.source.kafka.proto.value.deserializer.class | org.apache.kafka.common.serialization.ByteArrayDeserializer | Kafka Proto 负载反序列化类Config Param: KAFKA_PROTO_VALUE_DESERIALIZER_CLASSSince Version: 0.15.0 |
Kinesis 源配置
控制 Hudi Streamer 中 Kinesis 源行为的配置。
| 配置名称 | 默认值 | 描述 |
|---|
hoodie.streamer.source.kinesis.stream.name(N/A)Kinesis Data Streams 流名称。Config Param: KINESIS_STREAM_NAMESince Version: 1.2.0
Pulsar 源配置
控制 Hudi Streamer 中 Pulsar 源行为的配置。
配置名称默认值描述
hoodie.streamer.source.pulsar.topic(N/A)用于读取数据的目标 Pulsar topic 名称Config Param: PULSAR_SOURCE_TOPIC_NAME
hoodie.streamer.source.pulsar.endpoint.admin.urlhttp://localhost:8080目标 Pulsar 端点的 URL(形式为 'pulsar://host:port')Config Param: PULSAR_SOURCE_ADMIN_ENDPOINT_URL
hoodie.streamer.source.pulsar.endpoint.service.urlpulsar://localhost:6650目标 Pulsar 端点的 URL(形式为 'pulsar://host:port')Config Param: PULSAR_SOURCE_SERVICE_ENDPOINT_URL
S3 源配置
控制 Hudi Streamer 中 S3 源行为的配置。
配置名称默认值描述
hoodie.streamer.s3.source.queue.url(N/A)云对象事件的队列 URLConfig Param: S3_SOURCE_QUEUE_URL
基于文件的 SQL 源配置
控制 Hudi Streamer 中基于文件的 SQL 源行为的配置。
配置名称默认值描述
hoodie.streamer.source.sql.file(N/A)包含用于读取源数据的 SQL 查询的 SQL 文件路径。Config Param: SOURCE_SQL_FILESince Version: 0.14.0
SQL 源配置
控制 Hudi Streamer 中 SQL 源行为的配置。
配置名称默认值描述
hoodie.streamer.source.sql.sql.query(N/A)用于获取源数据的 SQL 查询。Config Param: SOURCE_SQL
Hudi Streamer Schema Provider 配置
控制 Hudi Streamer 的 schema provider 的配置。
Hudi Streamer Schema Provider 配置
配置名称默认值描述
hoodie.streamer.schemaprovider.registry.targetUrl(N/A)你要写入的目标端的 schema,例如 https://foo:bar@schemaregistry.orgConfig Param: TARGET_SCHEMA_REGISTRY_URL
hoodie.streamer.schemaprovider.registry.url(N/A)你要读取的源端的 schema,例如 https://foo:bar@schemaregistry.orgConfig Param: SRC_SCHEMA_REGISTRY_URL
基于文件的 Schema Provider 配置
基于文件的 schema provider 的相关配置。
配置名称默认值描述
hoodie.streamer.schemaprovider.source.schema.file(N/A)你要读取的源端的 schemaConfig Param: SOURCE_SCHEMA_FILE
hoodie.streamer.schemaprovider.target.schema.file(N/A)你要写入的目标端的 schemaConfig Param: TARGET_SCHEMA_FILE
评论
登录后参与评论
KnowForge