// for table govern policyALTER TABLE`DataLakeCatalog`.`wd_db`.`wd_tb`SETTBLPROPERTIES ('smart-optimizer.inherit' = 'none','smart-optimizer.written.enable' = 'enable')// for database govern policyALTER DATABASE`DataLakeCatalog`.`wd_db`SETDBPROPERTIES ('smart-optimizer.inherit' = 'none','smart-optimizer.written.enable' = 'enable')
属性值 | 含义 | 默认值 | 取值说明 |
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.retain-last | (可选)快照过期时间,单位天 | 5 | 快照存在时间超过该值时,平台会将该快照标记为过期的快照。快照过期时间取值越长,快照清理的速度越慢,占用存储空间越多。 |
smart-optimizer.written.advance.before-days | (可选)保留过期快照数量 | 2 | 超过保留个数的过期快照将会被清理。保留的过期快照个数越多,存储空间占用越多。建议取值为5。 |
smart-optimizer.written.advance.expired-snapshots-interval-min | (可选)快照过期执行周期 | 600(10 hour) | 平台会周期性扫描快照并过期快照。执行周期越短,快照的过期会更灵敏,但是可能消耗更多资源。 |
smart-optimizer.written.advance.cow-compact-enable | (可选)是否开启COW表(V1表或者V2非Upsert表)合并 | disable | 该配置项开启后,系统会自动针对 COW 表产生文件合并任务。 需注意:COW 表通常数据量都较大,进行文件合并时可能会占用较多的资源,您可根据资源情况及表大小选择是否开启 COW 表文件合并。 |
smart-optimizer.written.advance.strategy | (可选)文件合并策略 | binpack | binpack(默认合并策略):将文件以 append 的方式对满足合并条件的数据文件合并为更大的数据文件。
sort:sort 策略合并时会根据指定的字段进行排序,您可以根据业务场景选择使用频率较高的查询条件字段作为排序字段,合并后可提高查询性能。 |
smart-optimizer.written.advance.sort-order | (可选)当文件合并策略为sort时,配置的sort排序规则 | - | 如果您没有配置排序策略,Upsert 表将选择设置的 upsert 键值(默认取前两个键值)按照 ASC NULLS LAST 的方式排序。如果 COW 表 sort 合并时找不到排序策略,将采用 binpack 默认合并策略。 |
smart-optimizer.written.advance.remove-orphan-interval-min | (可选)移除孤立文件执行周期 | 1440(24 hour) | 平台会周期性扫描并清理孤立文件。执行周期越短,清理孤立文件会更灵敏,但是可 能消耗更多资源。 |
优化建议检查项 | 子检查项 | 含义 | 业务场景 | 优化建议 |
表基本属性配置检查 | 是否开启元数据治理 | 检查是否开启元数据治理,防止表频繁写入引起元数据metadata数量膨胀 | append/merger into/upsert | 建议开启 |
| 是否设置 bloom filter | 检查是否设置 bloom filter,在开启 bloom filter 表后,针对 MOR 表并快速过滤 deletes 文件,能加快 MOR 表查询和 deletes 文件合并 | upsert | 必须开启 |
| 是否配置 metrics 关键属性 | 检查是否 metrics 在设置为 full,该属性开启后,会记录全部的 metrtics 信息,避免应表 location 过长导致 metrics 信息记录不全 | append/merger into/upsert | 必须开启 |
数据优化配置检查 | 小文件合并 | 检查是否开启小文件合并 | merge into/upsert | 必须开启 |
| 快照过期 | 检查是否开启快照过期 | append/merge into/upsert | 建议开启 |
| 移除孤立文件 | 检查是否开启移除孤立文件 | append/merge into/upsert | 建议开启 |
近期治理任务检查项 | 近期治理任务检查项 | 如表开启了数据治理,系统统计数据治理任务的执行情况,当出现连续多个任务执行超时或者失败时,将判断为需要优化 | append/merger into/upsert | 建议开启 |
数据存储分布 | 平均文件大小 | 采集快照的summary信息,计算平均文件大小,当平均文件大小小于10M时将判断为需要优化 | append/merger into/upsert | 建议开启 |
| MetaData 元文件大小 | 采集表 metadata.json 元文件大小,当该文件大小超过10M将判定为需要优化 | append/merger into/upsert | 建议开启 |
| 表快照数量 | 采集表快照数量,当表快照数量超过1000个将判定为需要优化 | append/merger into/upsert | 建议开启 |
ALTER TABLE`DataLakeCatalog`.`axitest`.`upsert_case`SETTBLPROPERTIES('write.metadata.delete-after-commit.enabled' = 'true','write.metadata.previous-versions-max' = '100');
ALTER TABLE`DataLakeCatalog`.`axitest`.`upsert_case`SETTBLPROPERTIES('write.parquet.bloom-filter-enabled.column.id' = 'true');
ALTER TABLE`DataLakeCatalog`.`axitest`.`upsert_case`SETTBLPROPERTIES('write.metadata.metrics.default' = 'full');
CALL `DataLakeCatalog`.`system`.`rewrite_data_files`(`table` => 'test_db.test_tb',`options` => map('delete-file-threshold','10','max-concurrent-file-group-rewrites', --根据实际资源情况而定,并发度越高,采用的资源越多,文件合并越快'5','partial-progress.enabled','true','partial-progress.max-commits','10','max-file-group-size-bytes','10737418240','min-input-files','30','target-file-size-bytes','134217728'))
--采用spark 作业引擎过期快照参考CALL `DataLakeCatalog`.`system`.`expire_snapshots`(`table` => 'test_db.test_tb',`retain_last` => 5,`stream_results` => true,`older_than` => TIMESTAMP '2024-01-10 13:02:40.407', --过期时间根据表实际快照为准`max_concurrent_deletes` => 50);--采用spark sql引擎过期快照参考CALL `DataLakeCatalog`.`system`.`expire_snapshots`(`table` => 'test_db.test_tb',`retain_last` => 5,`stream_results` => true,`delete_by_executor` => true,`older_than` => TIMESTAMP '2024-01-10 13:02:40.407', --过期时间根据表实际快照为准`max_concurrent_deletes` => 4)
本页内容是否解决了您的问题?