文档

重大语义变更

更新时间:

Blink作业迁移到Flink全托管后,Flink对部分Blink函数进行了重新定义和修改,这些变化将对您的业务产生影响。本文为您介绍Flink在Blink的基础上发生的重大的语义变更详情。

Timestamp类型变更

Flink新增了Timestamp_ltz类型,和Timestamp类型的区别如下:

  • Timestamp相当于一个字符串类型,无论作业时区怎么变,得到的字符串是不变的。

  • Timestamp_ltz是一个全球统一的时间点类型,属于Bigint类型。如果将其转为字符串,则结果会随着作业时区改变。

Blink中常用的CURRENT_TIMESTAMP与NOW函数的返回类型均由Timestamp改为Timestamp_ltz。所以如果您的Blink代码中存在将Timestamp转化为字符串的操作,该结果会随着作业时区改变。详情请参见TIMESTAMP vs TIMESTAMP_LTZ

Bigint列不能作为时间属性列

Bigint列现在不能作为时间属性列,只有Timestamp和Timestamp_ltz的列可以。如果基于Bigint列定义Watermark,则在语法检查或上线时会报错。

自定义函数需要额外的类型提示

Flink 1.11开始引入新的类型系统,期望能自动推导函数类型。但由于实现的不完善,自定义的标量函数和表值函数可能会提示无法推导类型。如果出现这种情况,则您可以通过以下任何一种方式进行处理:

  • 在实现自定义函数时,需要您手动添加@DataTypeHint和@FunctionHint。

    详情请参见类型推导

  • 在实现自定义函数时,需要您对自定义函数实现定制类型推导。

    详情请参见定制类型推导

Int类型整除结果类型变动

Blink

VVR

int / int => double

int / int => int

参数大小写敏感变动

Blink作业中,默认参数大小写不敏感,但Flink默认敏感。

如果您需要设置为大小写不敏感,则需要在作业运维页面,单击目标作业名称,在部署详情页签,单击运行参数配置右侧的编辑,在其他配置中添加参数table.identifier-case-sensitive: 'false' 后,单击保存

说明

通过自动迁移工具迁移过来的作业,已经默认添加了table.identifier-case-sensitive: 'false'配置,即参数大小写不敏感。

state ttl参数变更

Flink SQL作业中的state ttl参数,需要您统一使用参数table.exec.state.ttl配置过期时间,例如设置为该参数默认值129600000,单位为毫秒,表示过期时间为1.5天。Blink上的state.backend.gemini.ttl.msstate.backend.niagara.ttl.msttl参数在Flink SQL作业中会被覆盖,无法生效。关于ttl参数信息详情请参见基本配置

新版本迁移工具会自动对SQL作业的state ttl参数进行转换。如果一个Blink作业配置多个ttl参数,会取其中的最大值作为转换后的Flink作业ttl参数。

  • 本页导读 (1)
文档反馈