当前位置: 首页 > 知识库问答 >
问题:

如何将表转换为包含数组类型的数据流(Flink)?

毕衡
2023-03-14

我有关于 Flink 的表 API 的问题 (1.13 )。我有一个包含多个字段的 POJO,其中一个是:

List<String> my_list; 

我使用此字段的以下声明创建表:

"CREATE TABLE my_table (
   ...
   my_list ARRAY<STRING>,
   ...
)"

当我尝试使用 toRetractStream[MY_POJO] 方法将我的表转换为数据流时,我收到以下错误:

线程“main”中的异常 org.apache.flink.table.api.ValidationException:查询结果的列类型与未注册表的接收器不匹配。

原因:位置 11 处的汇柱“my_list”类型不兼容。查询架构: [..., my_list: 数组, ...]Sink schema: [..., my_list: RAW('java.util.List', ?), ...]

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

共有1个答案

谭京
2023-03-14

我建议尝试新的API方法from/toDataStreamfrom/toChangelogStream。它们支持所有类型的类和数据类型。

toDataStream 还支持映射到具有列表成员的 POJO。

 类似资料:
  • 当运行此代码时,我得到以下错误:

  • 问题内容: 我正在尝试使用以下代码将包含Integer对象的ArrayList转换为原始int [],但它会引发编译时错误。是否可以用Java进行转换? 问题答案: 你可以进行转换,但是我认为没有内置的功能可以自动进行转换: (请注意,如果其中一个或任何一个元素为,则会抛出。) 编辑:根据评论,你可能希望使用列表迭代器来避免诸如:

  • 将Java 8转换为数组的最简单/最快捷的方法是什么?

  • 问题内容: 我有一个类型为TYPE_4BYTE_ABGR的字节数组,我知道它的宽度和高度,我想将其更改为BufferedImage,有什么想法吗? 问题答案: 可能效率不是很高,但是可以通过以下方式将a转换为另一种类型: 关于您要实现的方法,您必须知道图像的宽度或高度才能将a转换为a 。 编辑: 一种方法是将转换为(数据类型)并使用:

  • 问题内容: 我正在SQLite Manager中创建数据库。我想存储到数据库中。正确显示了另一个字段,但是当我使用数据类型的字段时,它不会显示。 问题答案: 您可以将图像转换为字节数组,并将该字节数组存储在数据库中的blob中。您可以将图像作为字节数组从数据库中检索回来。 如何从imageview获取字节数组: 将字节数组存储在数据库中: 从字节数组中检索图像:

  • 所以我有: 其中包含x个数组列表,其中包含另一个y个字符串...演示: 其中index是指包含字符串的数组索引。 如何将其转换为2D数组,该数组如下所示: 非常感谢你。

  • 我正在使用Flink表API,使用Java将数据集转换为数据流....以下是我的代码: ExpressionException:JavaStreamingTranslator的根无效:Root(ArraySeq((related_value,Double),(ref_id,String)))。您尝试将基于数据集的表转换为数据流吗?我想知道我们如何使用Flink表API将DataSet转换为Data

  • 问题内容: 也许这很简单,但实际上我对Java 8功能不熟悉,不知道如何实现。我有一条包含以下文本的简单行: “密钥,名称” 并且我想将该行转换为String数组,并用逗号(,)分隔每个值,但是,我还想在返回最后一个数组之前修剪每个字段,所以我做了以下工作: 但是,这将返回Object []数组而不是String []数组。经过进一步检查,我可以确认内容实际上是String实例,但是数组本身是Ob