SHOW TBLPROPERTIES `DataLakeCatalog`.`databases_name`.`table_name`;
CREATE TABLE IF NOT EXISTS `DataLakeCatalog`.`dbname`.`test_v1` (`id` int, `name` string, `ts` date) PARTITIONED BY (`ts`);
CREATE TABLE IF NOT EXISTS `DataLakeCatalog`.`dbname`.`test_v2` (`id` int, `name` string, `ts` date) PARTITIONED BY (`ts`) TBLPROPERTIES ('format-version' = '2', -- 创建 V2 表'write.upsert.enabled' = 'true', -- 写入时做 upsert 操作,只支持 V2 表'write.distribution-mode' = 'hash', -- 定义写入数据的分布,设置为hash,支持多并发写入'write.update.mode' = 'merge-on-read' -- 写入更新模式,在写入的时候做merge操作,只支持 V2 表)
SHOW TBLPROPERTIES table_name [('property_name')]
ALTER TABLE`DataLakeCatalog`.`database_name`.`table_name`SETTBLPROPERTIES ('format-version' = '2','write.upsert.enabled' = 'true')
参数 | 说明 |
数据去向 | 选择需要同步的目标数据源。 |
写入模式 | Upsert:更新写入。当主键不冲突时,可插入新行;当主键冲突时,则进行更新。适用于目标表有主键且需要根据源端数据实时更新的场景。会有一定的性能损耗. Append:追加写入。无论是否有主键,以插入新行的方式追加写入数据,是否存在主键冲突取决于目标端。适用于无主键且允许数据重复的场景。无性能损耗。 全量 Append + 增量 Upsert:根据源端数据同步阶段自动切换数据写入方式,全量阶段采用 Append 写入提高性能,增量阶段采用 Upsert 写入进行数据实时更新。该模式当前仅支持来源端为 MySQL、TDSQL-C MySQL、TDSQL MySQL、Oracle、PostgreSQL 的数据源。 |
库/表匹配策略 | DLC 中数据库以及数据表对象的名称匹配规则。 |
写入优化 | 写入优化适用于频繁写入/实时写入的场景。开启写入优化会自动合并文件、删除过期快照。强烈建议您在实时 Upsert 写入的场景下开启写入优化。 说明: 集成任务当前仅支持采用 DLC 写入优化的默认配置,用户如需修改相应配置,请前往 DLC 页面进行修改。 |
数据优化资源 | 数据优化视数据写入情况可能产生大量任务,占用您的集群资源,为避免和正常业务相互影响,强烈建议此处用单独的集群资源。数据优化支持 SuperSQL 引擎 > SparkSQL、SuperSQL 引擎 > Spark 作业,如有生命周期管理的需求,请使用 SuperSQL 引擎 > Spark 作业引擎。 |
高级设置 | 可根据业务需求配置参数。 |
参数 | 说明 |
数据去向 | 需要写入的 DLC 数据源。 |
库 | 支持选择、或者手动输入需写入的库名称 默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
表 | 支持选择、或者手动输入需写入的表名称。 当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
写入模式 | DLC 实时同步写入支持两三种模式: Upsert:更新写入。当主键不冲突时,可插入新行;当主键冲突时,则进行更新。适用于目标表有主键且需要根据源端数据实时更新的场景。会有一定的性能损耗。 Append:追加写入。无论是否有主键,以插入新行的方式追加写入数据,是否存在主键冲突取决于目标端。适用于无主键且允许数据重复的场景。无性能损耗。 全量 Append + 增量 Upsert:根据源端数据同步阶段自动切换数据写入方式,全量阶段采用 Append 写入提高性能,增量阶段采用 Upsert 写入进行数据实时更新。该模式当前仅支持来源端为 MySQL、TDSQL-C MySQL、TDSQL MySQL、Oracle、PostgreSQL 的数据源。 |
唯一键 | Upsert 写入模式下,需设置唯一键保证数据有序性,支持多选。 |
写入优化 | 写入优化适用于频繁写入/实时写入的场景。开启写入优化会自动合并文件、删除过期快照。强烈建议您在实时 Upsert 写入的场景下开启写入优化。 说明: 集成任务当前仅支持采用 DLC 写入优化的默认配置,用户如需修改相应配置,请前往 DLC 页面进行修改。 |
数据优化资源 | 数据优化视数据写入情况可能产生大量任务,占用您的集群资源,为避免和正常业务相互影响,强烈建议此处用单独的集群资源。数据优化支持 SuperSQL 引擎 > SparkSQL、SuperSQL 引擎 > Spark 作业,如有生命周期管理的需求,请使用 SuperSQL 引擎 > Spark 作业引擎。 |
高级设置 | 可根据业务需求配置参数。 |
内部类型 | Iceberg 类型 |
CHAR | STRING |
VARCHAR | STRING |
STRING | STRING |
BOOLEAN | BOOLEAN |
BINARY | FIXED(L) |
VARBINARY | BINARY |
DECIMAL | DECIMAL(P,S) |
TINYINT | INT |
SMALLINT | INT |
INTEGER | INT |
BIGINT | LONG |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
DATE | DATE |
TIME | TIME |
TIMESTAMP | TIMESTAMP |
TIMESTAMP_LTZ | TIMESTAMPTZ |
INTERVAL | - |
ARRAY | LIST |
MULTISET | MAP |
MAP | MAP |
ROW | STRUCT |
RAW | - |
Caused by: java.lang.IllegalArgumentException: Cannot write incompatible dataset to table with schema:* mobile should be required, but is optionalat org.apache.iceberg.types.TypeUtil.checkSchemaCompatibility(TypeUtil.java:364)at org.apache.iceberg.types.TypeUtil.validateWriteSchema(TypeUtil.java:323)
java.lang.ArrayIndexOutOfBoundsException: 1at org.apache.flink.table.data.binary.BinarySegmentUtils.getLongMultiSegments(BinarySegmentUtils.java:736) ~[flink-table-blink_2.11-1.13.6.jar:1.13.6]at org.apache.flink.table.data.binary.BinarySegmentUtils.getLong(BinarySegmentUtils.java:726) ~[flink-table-blink_2.11-1.13.6.jar:1.13.6]at org.apache.flink.table.data.binary.BinarySegmentUtils.readTimestampData(BinarySegmentUtils.java:1022) ~[flink-table-blink_2.11-1.13.6.jar:1.13.6]at org.apache.flink.table.data.binary.BinaryRowData.getTimestamp(BinaryRowData.java:356) ~[flink-table-blink_2.11-1.13.6.jar:1.13.6]at org.apache.flink.table.data.RowData.lambda$createFieldGetter$39385f9c$1(RowData.java:260) ~[flink-table-blink_2.11-1.13.6.jar:1.13.6]
本页内容是否解决了您的问题?