4

我有关于 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', ?), ...]

我想避免手动映射每个字段并保持代码干净,是否有处理这种数据类型的解决方案?

4

1 回答 1

0

我建议尝试新的 API 方法from/toDataStreamfrom/toChangelogStream. 这些支持各种类和数据类型

toDataStreamList还支持映射到具有成员的 POJO 。

于 2022-01-20T16:40:41.523 回答