# 创建Iceberg表常用配置参数
创建Iceberg表时，可以通过"TBLPROPERTIES"配置相关参数的值。
#### Read属性参数
表1Read属性参数介绍 
| 参数                                      | 默认值               | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| read.split.target-size                 | 134217728（128 MB） | 合并数据输入拆分时的目标大小。                                                                                                                                                                                                                                                                                                                                                                                                                   |
| read.split.metadata-target-size       | 33554432（32 MB） | 合并元数据输入拆分时的目标大小。                                                                                                                                                                                                                                                                                                                                                                                                                   |
| read.split.planning-lookback          | 10              | 合并输入拆分时考虑的区间 (bin) 数量。                                                                                                                                                                                                                                                                                                                                                                                                             |
| read.split.open-file-cost             | 4194304（4 MB）    | 打开文件的预估成本，在合并拆分时用作最小权重。                                                                                                                                                                                                                                                                                                                                                                                                             |
| read.parquet.vectorization.enabled   | false             | 用于控制是否使用Parquet向量化读取。                                                                                                                                                                                                                                                                                                                                                                                                             |
| read.parquet.vectorization.batch-size | 5000              | Parquet向量化读取的批处理大小。                                                                                                                                                                                                                                                                                                                                                                                                               |
| read.orc.vectorization.enabled         | false            | 用于控制是否使用ORC向量化读取。                                                                                                                                                                                                                                                                                                                                                                                                                    |
| read.orc.vectorization.batch-size   | 5000           | ORC向量化读取的批处理大小。                                                                                                                                                                                                                                                                                                                                                                                                                     |
| format-version                           | 2                  | 元数据格式版本，决定表支持的功能和写入能力。 - v1：只支持Append写入，不支持行级删除和修改操作。  - v2（默认值）：支持行级Delete/Update/Merge操作，兼容增量更新与删除和修改操作。   |
   
#### Write属性参数
表2Write属性参数介绍 
| 参数                                                  | 默认值                                      | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|
| write.format.default                               | parquet                                 | 表的默认文件格式，支持parquet、avro和orc格式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| write.delete.format.default                        | parquet（默认与"write.format.default"的值相同） | 表的默认删除文件格式，支持parquet、avro和orc格式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| write.parquet.row-group-size-bytes                   | 134217728（128 MB）                       | 用于设置Parquet行组大小。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| write.parquet.page-size-bytes                       | 1048576（1 MB）                           | 用于设置Parquet页大小。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| write.parquet.page-row-limit                     | 20000                                 | 用于设置Parquet页行限制。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| write.parquet.dict-size-bytes                      | 2097152（2 MB）                           | 用于设置Parquet字典页大小。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| write.parquet.compression-codec                    | zstd                                 | 用于设置Parquet压缩编解码器，支持设置为zstd、lz4、gzip、snappy或uncompressed。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| write.parquet.compression-level                   | null                                   | 用于设置Parquet的压缩级别。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| write.parquet.bloom-filter-enabled.column.col1     | -                                      | 用于控制在写入Parquet文件时是否为特定列"col1"启用布隆过滤器。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| write.parquet.bloom-filter-max-bytes              | 1048576（1 MB）                           | 用于设置布隆过滤器位集的最大字节数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| write.parquet.bloom-filter-fpp.column.col1          | 0.01                                  | 用于设置在写入Parquet文件时，"col1"的布隆过滤器的误报概率，取值范围为0.0\~1.0。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| write.avro.compression-codec                       | gzip                                   | 用于指定在写入Avro文件时使用的压缩编解码器，支持设置为gzip（默认为9级Deflate）、zstd、snappy或uncompressed。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| write.avro.compression-level                       | null                                     | 用于设置Avro压缩级别。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| write.orc.stripe-size-bytes                          | 67108864（64 MB）                           | 用于定义默认的ORC条带大小，单位为字节。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| write.orc.block-size-bytes                          | 268435456（256 MB）                      | 用于定义ORC文件的默认文件系统块大小，单位为字节。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| write.orc.compression-codec                          | zlib                                    | 用于设置ORC压缩编解码器，支持设置为zstd、lz4、lzo、zlib、snappy或none。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| write.orc.compression-strategy                       | speed                                   | 用于设置ORC压缩策略，支持speed、compression。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| write.orc.bloom.filter.columns                      | -                                       | 需要创建布隆过滤器的列名的逗号分隔列表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| write.orc.bloom.filter.fpp                           | 0.05                                     | 用于设置布隆过滤器的误报概率，取值范围为0.0\~1.0。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| write.location-provider.impl                        | null                                  | 可选的LocationProvider自定义实现。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| write.metadata.compression-codec                     | none                                    | 元数据压缩编解码器，支持none或gzip。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| write.metadata.metrics.max-inferred-column-defaults | 100                                     | 定义收集指标的顶级列的最大数量。对于具有嵌套字段的表，存储的指标数量可能高于此限制。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| write.metadata.metrics.default                       | truncate(16)                            | 表中所有列的默认指标模式，支持none、counts、truncate(*length*)或full。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| write.metadata.metrics.column.col1                 | -                                        | "col1"列的指标模式，允许按列调整，支持设置为none、counts、truncate(*length*)或full。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| write.target-file-size-bytes                        | 536870912（512 MB）                         | 用于控制生成文件的大小，单位为字节。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| write.delete.target-file-size-bytes                | 67108864（64 MB）                          | 用于控制生成的删除文件的大小，单位为字节。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| write.distribution-mode                            | none（不同引擎该参数默认值不同）                      | 定义写入数据的分布模式，详细操作请参见[写入分布模式](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_300843.html#mrs_01_300843)。 - none：不打乱行。  - hash：按分区键进行哈希分布。  - range：如果表有SortOrder，则按分区键或排序键进行范围分布。   |
| write.delete.distribution-mode                    | hash                                   | 定义写入删除数据的分布模式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| write.update.distribution-mode                       | hash                                     | 定义写入更新数据的分布模式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| write.merge.distribution-mode                     | none                                   | 定义写入合并数据的分布模式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| write.wap.enabled                                 | false                                   | 是否启用写-审计-发布（write-audit-publish）写入数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| write.summary.partition-limit                      | 0                                        | 如果更改的分区数量小于此限制，则在快照摘要中包含分区级别的摘要统计信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| write.metadata.delete-after-commit.enabled           | false                                  | 控制是否在提交后删除最旧的被跟踪的版本元数据文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| write.metadata.previous-versions-max                 | 100                                   | 提交后保留的先前版本元数据文件的最大数量，超过此数量后将删除。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| write.spark.fanout.enabled                         | false                                   | 在Spark中是否启用扇出写入器（fanout writer），启用后不需要数据聚类，但会使用更多内存。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| write.object-storage.enabled                       | false                                    | 是否启用对象存储位置提供器，该提供器会向文件路径添加哈希组件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| write.object-storage.partitioned-paths              | true                                    | 用于控制Iceberg是否在写入对象存储时使用分区路径存储。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| write.data.path                                    | *表位置*+ /data                             | 用于设置数据文件的基本位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| write.metadata.path                                | *表位置* + /metadata                          | 用于设置元数据文件的基本位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| write.delete.mode                                  | copy-on-write                          | 用于设置删除命令使用的模式，支持copy-on-write和merge-on-read（v2支持）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| write.delete.isolation-level                        | serializable                           | 用于设置删除命令的隔离级别，支持serializable和snapshot。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| write.update.mode                                  | copy-on-write                          | 用于设置更新命令使用的模式，支持copy-on-write和merge-on-read（v2支持）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| write.update.isolation-level                       | serializable                             | 用于设置更新命令的隔离级别，支持serializable和snapshot。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| write.merge.mode                                   | copy-on-write                          | 用于设置合并命令使用的模式，支持copy-on-write和merge-on-read（v2支持）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| write.merge.isolation-level                        | serializable                          | 用于设置合并命令的隔离级别，支持serializable和snapshot。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   
#### 表行为属性参数
表3表行为属性参数介绍 
| 参数                                 | 默认值                | 参数说明                                       |
|:---|:---|:---|
| commit.retry.num-retries           | 4                   | 提交失败前的重试次数。                                 |
| commit.retry.min-wait-ms             | 100                  | 重试提交前等待的最小时间（毫秒）。                         |
| commit.retry.max-wait-ms              | 60000（1 分钟）          | 重试提交前等待的最大时间（毫秒）。                         |
| commit.retry.total-timeout-ms        | 1800000（30 分钟）      | 提交的总重试超时时间（毫秒）。                            |
| commit.status-check.num-retries      | 3                    | 在连接丢失后，检查提交是否成功的次数，超过后因未知提交状态而失败。           |
| commit.status-check.min-wait-ms      | 1000（1秒）           | 重试状态检查前等待的最小时间（毫秒）。                        |
| commit.status-check.max-wait-ms       | 60000（1 分钟）         | 重试状态检查前等待的最大时间（毫秒）。                      |
| commit.status-check.total-timeout-ms | 1800000（30 分钟）      | 提交状态检查必须成功的总超时时间（毫秒）。                     |
| commit.manifest.target-size-bytes     | 8388608（8 MB）       | 合并清单文件时的目标大小。                             |
| commit.manifest.min-count-to-merge     | 100                 | 合并前需累积的清单文件最小数量。                           |
| commit.manifest-merge.enabled         | true                 | 控制是否在写入时自动合并清单。                           |
| history.expire.max-snapshot-age-ms  | 432000000（5 天）     | 过期快照时，表及其所有分支上保留的快照的默认最大年龄。                |
| history.expire.min-snapshots-to-keep    | 1                     | 过期快照时，表及其所有分支上保留的快照的默认最小数量。                 |
| history.expire.max-ref-age-ms         | Long.MAX_VALUE（永久） | 对于除主分支之外的快照引用，过期快照时保留的快照引用的默认最大年龄，主分支永不过期。 |
   
