表类型 | 使用场景及建议 | 特点 |
原生表(iceberg) | 1. 用户有实时写入需求,包括 append/merge into/upsert 场景需求,不限于 inlong/oceans/自建flink 实时写入。 2. 用户不想直接管理存储相关的运维,交给 DLC 存储托管。 3. 用户不想对 Iceberg 表格式进行运维,交给 DLC 进行调优和运维。 4. 希望使用 DLC 提供的自动数据优化能力,持续对数据进行优化。 | 1. Iceberg 表格式。 2. 使用前需要开通托管存储。 3. 数据存储存储在 DLC 提供的托管存储上。 4. 不需要指定 external、location 等信息。 5. 支持开启 DLC 智能数据优化。 |
属性值 | 含义 | 配置指导 |
format-version | iceberg 表版本,取值范围1、2,默认取值为1 | 如果用户写入场景有 upsert,该值必须设置为2 |
write.upsert.enabled | 是否开启 upsert,取值为true;不设置则为不开启 | 如果用户写入场景有 upsert,必须设置为 true |
write.update.mode | 更新模式 | merge-on-read 指定为 MOR 表,缺省为 COW |
write.merge.mode | merge 模式 | merge-on-read 指定为 MOR 表,缺省为 COW |
write.parquet.bloom-filter-enabled.column.{col} | 开启 bloom,取值为 true 表示开启,缺省不开启 | upsert 场景必须开启,需要根据上游的主键进行配置;如上游有多个主键,最多取前两个;开启后可提升 MOR 查询和小文件合并性能 |
write.distribution-mode | 写实模式 | 建议取值为 hash,当取值为 hash 时,当数据写入时会自行进行 repartition,缺点是影响部分写入性能 |
write.metadata.delete-after-commit.enabled | 开始 metadata 文件自动清理 | 强烈建议设置为 true,开启后 iceberg 在产生快照时会自动清理历史的 metadata 文件,可避免大量的 metadata 文件堆积 |
write.metadata.previous-versions-max | 设置默认保留的 metadata 文件数量 | 默认值为100,在某些特殊的情况下,用户可适当调整该值,需要配合 write.metadata.delete-after-commit.enabled 一起使用 |
write.metadata.metrics.default | 设置列 metrices 模型 | 必须取值为 full |
属性值 | 系统默认值 | 含义 | 配置指导 |
commit.retry.num-retries | 4 | 提交失败后的重试次数 | 发生重试时,可尝试提大次数 |
commit.retry.min-wait-ms | 100 | 重试前的最小等待时间,单位为毫秒 | 当时冲突十分频繁,如等待一段时间后依然冲突,可尝试调整该值,加大重试之间的间隔 |
commit.retry.max-wait-ms | 60000(1 min) | 重试前的最大等待时间,单位为毫秒 | 结合commit.retry.min-wait-ms一起调整使用 |
commit.retry.total-timeout-ms | 1800000(30 min) | 整个重试提交的超时时间 | - |
转换策略 | 描述 | 原始字段类型 | 转换后类型 |
identity | 不转换 | 所有类型 | 与原类型一致 |
bucket[N, col] | hash分桶 | int, long, decimal, date, time, timestamp, timestamptz, string, uuid, fixed, binary | int |
truncate[col] | 截取固定长度 | int, long, decimal, string | 与原类型一致 |
year | 提取字段 year 信息 | date, timestamp, timestamptz | int |
month | 提取字段 mouth 信息 | date, timestamp, timestamptz | int |
day | 提取字段 day 信息 | date, timestamp, timestamptz | int |
hour | 提取字段 hour 信息 | timestamp, timestamptz | int |
场景 | CALL 语句 | 执行引擎 |
查询 history | select * from DataLakeCatalog .db .sample$history | DLC spark SQL 引擎、presto 引擎 |
查询快照 | select * from DataLakeCatalog .db .sample$snapshots | DLC spark SQL 引擎、presto 引擎 |
查询 data 文件 | select * from DataLakeCatalog .db .sample$files | DLC spark SQL 引擎、presto 引擎 |
查询manifests | select * from DataLakeCatalog .db .sample$manifests | DLC spark SQL 引擎、presto 引擎 |
查询分区 | select * from DataLakeCatalog .db .sample$partitions | DLC spark SQL 引擎、presto 引擎 |
回滚指定快照 | CALL DataLakeCatalog. system .rollback_to_snapshot('db.sample', 1) | DLC spark SQL 引擎 |
回滚到某个时间点 | CALL DataLakeCatalog. system .rollback_to_timestamp('db.sample', TIMESTAMP '2021-06-30 00:00:00.000') | DLC spark SQL 引擎 |
设置当前快照 | CALL DataLakeCatalog. system .set_current_snapshot('db.sample', 1) | DLC spark SQL 引擎 |
合并文件 | CALL DataLakeCatalog. system .rewrite_data_files(table => 'db.sample', strategy => 'sort', sort_order => 'id DESC NULLS LAST,name ASC NULLS FIRST') | DLC spark SQL 引擎 |
快照过期 | CALL DataLakeCatalog. system .expire_snapshots('db.sample', TIMESTAMP '2021-06-30 00:00:00.000', 100) | DLC spark SQL 引擎 |
移除孤立文件 | CALL DataLakeCatalog. system .remove_orphan_files(table => 'db.sample', dry_run => true) | DLC spark SQL 引擎 |
重新元数据 | CALL DataLakeCatalog. system .rewrite_manifests('db.sample') | DLC spark SQL 引擎 |
参数 | 含义 | 取值 |
AddDataFileSize | 写入新增数据文件数量 | 20 |
AddDeleteFileSize | 写入新增Delete文件数据量 | 20 |
AddPositionDeletes | 写入新增Position Deletes记录数量 | 1000 |
AddEqualityDeletes | 写入新增Equality Deletes记录数量 | 1000 |
属性值 | 含义 | 默认值 | 取值说明 |
smart-optimizer.inherit | 是否继承上一级策略 | default | none:不继承;default:继承 |
smart-optimizer.written.enable | 是否开启写入优化 | disable | disable:不开启;enable:开启。默认不开启 |
smart-optimizer.written.advance.compact-enable | (可选)写入优化高级参数,是否开始小文件合并 | enable | disable:不开启;enable:开启。 |
smart-optimizer.written.advance.delete-enable | (可选)写入优化高级参数,是否开始数据清理 | enable | disable:不开启;enable:开启。 |
smart-optimizer.written.advance.min-input-files | (可选)合并最小输入文件数量 | 5 | 当某个表或分区下的文件数目超过最小文件个数时,平台会自动检查并启动文件优化合并。文件优化合并能有效提高分析查询性能。最小文件个数取值较大时,资源负载越高,最小文件个数取值较小时,执行更灵活,任务会更频繁。建议取值为5。 |
smart-optimizer.written.advance.target-file-size-bytes | (可选)合并目标大小 | 134217728 (128 MB) | 文件优化合并时,会尽可能将文件合并成目标大小,建议取值128M。 |
smart-optimizer.written.advance.before-days | (可选)快照过期时间,单位天 | 2 | 快照存在时间超过该值时,平台会将该快照标记为过期的快照。快照过期时间取值越长,快照清理的速度越慢,占用存储空间越多。 |
smart-optimizer.written.advance.retain-last | (可选)保留过期快照数量 | 5 | 超过保留个数的过期快照将会被清理。保留的过期快照个数越多,存储空间占用越多。建议取值为5。 |
smart-optimizer.written.advance.expired-snapshots-interval-min | (可选)快照过期执行周期 | 600(10 hour) | 平台会周期性扫描快照并过期快照。执行周期越短,快照的过期会更灵敏,但是可能消耗更多资源。 |
smart-optimizer.written.advance.remove-orphan-interval-min | (可选)移除孤立文件执行周期 | 1440(24 hour) | 平台会周期性扫描并清理孤立文件。执行周期越短,清理孤立文件会更灵敏,但是可能消耗更多资源。 |
优化类型 | 建议开启场景 |
写入优化 | upsert 写场景:必须开启 merge into 写场景:必须开启 append 写入场景:按需开启 |
数据清理 | upsert 写场景:必须开启 merge into 写入场景:必须开启 append 写入场景:建议开启,并结合高级参数及历史数据回溯需求配置合理的过期删除时间 |
属性值 | 含义 | 默认值 | 取值说明 |
smart-optimizer.lifecycle.enable | 是否开启生命周期 | disable | disable:不开启;enable:开启。默认不开启 |
smart-optimizer.lifecycle.expiration | 生命周期实现周期,单位:天 | 30 | 当 smart-optimizer.lifecycle.enable 取值为 enable 时生效,需大于1 |
数据位置 | 导入建议 |
数据在用户自己的 COS 桶上 | 通过在 DLC 建立外部表,之后通过 Insert into/overwrite 的方式导入 |
数据在用户本地(或者其他执行机上) | 用户需要将数据上传到用户自己的 COS 桶上,之后建立 DLC 外部表,通过 insert into/overwrite 的方式导入 |
数据在用户 mysql | |
数据在用户自建 hive 上 | 用户通过建立联邦 hive 数据目录,之后通过 insert into/overwrite 的方式导入 |
本页内容是否解决了您的问题?