我有关于 Flink (1.13+) 的 table-api 的问题。我有一个包含多个字段的 POJO,其中之一是:
List<String> my_list;
我使用此字段的以下声明创建表:
"CREATE TABLE my_table (
...
my_list ARRAY<STRING>,
...
)"
当我尝试使用 toRetractStream[MY_POJO] 方法将表转换为 DataStream 时,出现以下错误:
线程“main”中的异常 org.apache.flink.table.api.ValidationException:查询的列类型 未注册表的结果和接收器不匹配。
原因:位置 11 处的接收器列“my_list”的类型不兼容。 查询架构:[...,my_list:ARRAY,...] 接收器架构:[..., my_list: RAW('java.util.List', ?), ...]
我想避免手动映射每个字段并保持代码干净,有没有解决方案来处理这种数据类型?
我建议尝试新的 API 方法
from/toDataStream
和 from/toChangelogStream
。这些支持各种类和数据类型。
toDataStream
还支持映射到具有 List
成员的 POJO。