将 Row 或 GenericRowData 与 DataStream API 一起使用更好吗?



我正在使用 flink 1.15.2,我应该使用 Row 还是 GenericRowData 来继承我自己的数据类型的 RowData?,我主要使用流式 API。 谢谢。 西格。

一般来说,DataStream API 在记录类型方面非常灵活。POJO类型可能是最方便的类型。基本上可以使用任何Java类,但您需要检查通过反射提取哪些TypeInformation。有时需要手动覆盖它。

对于Row,您将始终必须手动提供类型,因为反射无法根据类签名执行太多操作。

GenericRowData应该避免,它是一个内部类,有许多警告(字符串必须StringData并且数组处理并不简单)。反序列化后GenericRowData也变得BinaryRowData。TLDR 此类型适用于 SQL 引擎。

文档在这里实际上很有帮助,我也很困惑。

顶部标题为"所有已知实现类"的部分列出了所有实现。RowDataGenericRowData被描述为内部数据结构。 如果你可以使用POJO,那就太好了。 但是如果你需要实现RowData的东西,请查看BinaryRowDataBoxedWrapperRowDataColumnarRowDataNestedRowData或任何未列为内部的实现。

我个人正在使用NestedRowDataDataStream[Row]映射到DataStream[RowData],我完全不确定这是一个好主意:) 特别是因为我似乎无法添加string属性

最新更新