1. Configuration
1.1 table properties
1.1.1 Read properties
因为Iceberg在HDFS上的data文件,通常都是一个个的小文件,所以读取的时候会先进行combine,然后再返回数据。下面是进行combine的一些配置
Property | 默认 | 描述 |
---|
read.split.target-size | 134217728 (128 MB) | 合并data输入文件的目标大小 |
read.split.metadata-target-size | 33554432 (32 MB) | 合并metadata输入文件的目标大小 |
read.split.planning-lookback | 10 | 合并输入文件时,计划使用的垃圾箱数量 |
read.split.open-file-cost | 4194304 (4 MB) | 合并输入文件时,预估打开一个输入文件的成本大小 |
1.1.2 Write properties
Property | 默认 | 描述 |
---|
write.format.default | parquet | 表默认的file format,可选参数为parquet、avro、orc |
write.parquet.row-group-size-bytes | 134217728 (128 MB) | Parquet row group size |
write.parquet.page-size-bytes | 1048576 (1 MB) | Parquet page size |
write.parquet.dict-size-bytes | 2097152 (2 MB) | Parquet dictionary page size |
write.parquet.compression-codec | gzip | Parquet压缩编码格式,可选参数为zstd、brotli、lz4、gzip、snappy、uncompressed |
write.parquet.compression-level | null | Parquet compression level |
write.avro.compression-codec | gzip | Avro压缩编码格式,可选参数为gzip(deflate with 9 level)、gzip、snappy、uncompressed |
write.metadata.compression-codec | none | Metadata压缩编码格式,可选参数为none、gzip |
write.metadata.metrics.default | truncate(16) | 表中所有列默认的metrics模式,可选的参数为none、counts、truncate(length)、full |
write.metadata.metrics.column.col-name | (not set) | 表中某一列的metrics模式,可选的参数为none、counts、truncate(length)、full |
write.target-file-size-bytes | 536870912 (512 MB) | 写入文件的目标大小 |
write.distribution-mode | none | 定义写入数据的分布式情况,可选参数为:1. none: 不shuffle数据,2. hash: 根据partition key进行hash分布,3. range: 根据partition key或者sort key进行范围分布 |
write.wap.enabled | false | Enables write-audit-publish writes |
write.summary.partition-limit | 0 | 如果changed partition count小于当前参数,则snapshot summaries包含partition-level汇总状态 |
write.metadata.delete-after-commit.enabled | false | 当表commit之后,是否删除oldest version metadata files |
write.metadata.previous-versions-max | 100 | 当表commit之后,保留最大历史version metadata files数量,超过该历史版本数量的将被删除 |
write.spark.fanout.enabled | false | 在Spark中开启Partitioned-Fanout-Writer writes |
1.1.3 Table behavior properties
Property | 默认 | 描述 |
---|
commit.retry.num-retries | 4 | 在失败前,commit重试的次数 |
commit.retry.min-wait-ms | 100 | 当一次commit失败,到再次进行commit,之间的最小时间间隔 |
commit.retry.max-wait-ms | 60000 (1 min) | 当一次commit失败,到再次进行commit,之间的最大时间间隔 |
commit.retry.total-timeout-ms | 1800000 (30 min) | 当一个commit进行多次重试时,累计的重试超时时间 |
commit.status-check.num-retries | 3 | 当一个connection丢失,导致一个未知的commit状态,需要进行多少次status-check,去判断一个commit是否成功 |
commit.status-check.min-wait-ms | 1000 (1s) | 当一次status-check完成,到下一次status-check,之间的最小时间间隔 |
commit.status-check.max-wait-ms | 60000 (1 min) | 当一次status-check完成,到下一次status-check,之间的最大时间间隔 |
commit.status-check.total-timeout-ms | 1800000 (30 min) | 当进行多次status-check时,累计的check超时时间 |
commit.manifest.target-size-bytes | 8388608 (8 MB) | 合并manifest files的目标大小 |
commit.manifest.min-count-to-merge | 100 | 当manifest files的数量最少达到多少时,才进行合并 |
commit.manifest-merge.enabled | true | 写的时候是否自动合并manifest files |
history.expire.max-snapshot-age-ms | 432000000 (5 days) | 默认最大的snapshot过期时间 |
history.expire.min-snapshots-to-keep | 1 | 当所有snapshot都过期时,默认最小保留多少个snapshot不过期 |
history.expire.max-ref-age-ms | Long.MAX_VALUE (forever) | 对于snapshot references(除了main branch,main branch永远不会过期),默认最大snapshot references过期时间 |
1.1.4 Reserved table properties
只在创建或更新表的时候使用,并不会作为表metadata保存下来
Property | 默认 | 描述 |
---|
format-version | 1 | 表的format version,即版本1和版本2,可选的参数为1、2 |
1.1.4 Compatibility flags
Property | 默认 | 描述 |
---|
compatibility.snapshot-id-inheritance.enabled | false | 开启提交没有显式snapshot IDs的snapshots |
1.2 Catalog properties
Property | 默认 | 描述 |
---|
warehouse | null | 数据仓库的根路径 |
uri | null | URI字符串,比如Hive metastore URI |
clients | 2 | 客户端池大小 |
1.2.1 Lock catalog properties
关于catalog lock相关的配置,用来控制commit期间的lock行为
Property | 默认 | 描述 |
---|
lock.table | null | 用于lock的辅助表 |
lock.acquire-interval-ms | 5 seconds | the interval to wait between each attempt to acquire a lock在两次尝试获取lock之间的时间间隔 |
lock.acquire-timeout-ms | 3 minutes | 尝试获取lock所花费的的最大时间 |
lock.heartbeat-interval-ms | 3 seconds | 当获取lock之后,两次心跳之间的时间间隔 |
lock.heartbeat-timeout-ms | 15 seconds | 当没有心跳超过多久,lock被认为过期 |
1.3 Hadoop configuration
用于Hive Metastore connector
Property | 默认 | 描述 |
---|
iceberg.hive.client-pool-size | 5 | 当追踪HMS中的表,Hive客户端连接池的大小 |
iceberg.hive.lock-timeout-ms | 180000 (3 min) | 获取一个lock所花费的最大时间,单位毫秒 |
iceberg.hive.lock-check-min-wait-ms | 50 | 检查获取到的lock状态,所花费的最小时间,单位毫秒 |
iceberg.hive.lock-check-max-wait-ms | 5000 | 检查获取到的lock状态,所花费的最大时间,单位毫秒。该参数应该小于Hive Metastore的事务超时时间,即hive.txn.timeout或metastore.txn.timeout(新版本) |