2.1.x以上的版本,主键模型部分列更新问题

Viewed 28

使用主键模型,建表开启mow,创建RoutineLoad从kafka摄入数据,RoutineLoad声明了属性 "partial_columns" = "true"。

参考主键模型导入更新的文档,RoutineLoad的JobProperties里partial_columns=true。

文档描述 在columns中指定要导入的列(必须包含所有 key 列,不然无法更新)。

但实际上从kafka消费过来的数据对象是部分字段值数据时(主键有值,部分字段值为NULL或json中缺失字段名),表数据更新时将未传递的列值更新成了NULL或初始值,即还是覆盖了整行数据“upsert”模式。

文档描述:
如果使用的是 Stream Load/Broker Load/Routine Load,在导入时添加如下 header
partial_columns:true
使用Routine Load方式时,应如何添加partial_columns的heade?

使用Routine Load方式实时导入数据如何实现主键模型的部分列更新?

在2.1.x版本和3.0.2版本测试了都是一样的情况使用Routine Load方式不能部分列更新,而INSERT INTO设置session variable 的 set enable_unique_key_partial_update=true方式是可以的。

1 Answers

如果你声明的是全字段,那如果数据里面没有这个字段的值,必然置为null,建议自己写java,streamload,动态传递columns,或者是flink