当前位置:   article > 正文

7、Flink SQL 的 TypeInformation 和 DataType 的映射详解

7、Flink SQL 的 TypeInformation 和 DataType 的映射详解
a)概述

DataStream API 使用 org.apache.flink.API.common.typeinfo.TypeInformation 实例,描述流中传输的记录类型,它定义了如何将记录从一个 DataStream 运算符序列化和反序列化到另一个,它还有助于将状态序列化为保存点和检查点。

表 API 使用自定义数据结构在内部表示记录,并公开 org.apache.flink.Table.types.DataType 用于声明数据结构转换为外部格式,以便在源、接收器、UDF 或 DataStream API 中更容易使用。

DataType 比 TypeInformation 更丰富,因为它还包括有关逻辑 SQL 类型的详细信息,因此在转换过程中会隐式添加一些细节。

表的列名和类型是从数据流的 TypeInformation 自动派生的,使用 DataStream.getType() 检查是否已通过 DataStream API 的反射类型提取功能正确检测到类型信息,如果最外层记录的 TypeInformation 是 CompositeType,则在派生表的架构时,它将在第一级被展平。

b)注意

DataStream API 并不总是能够基于反射提取更具体的 TypeInformation,这通常由通用 Kryo 序列化程序支持的GenericTypeInfo 导致。

例如 Row 类不能进行反射式分析,并且总是需要显式的类型信息声明,如果在 DataStream API 中未声明正确的类型信息,则该行将显示为 RAW 数据类型,并且 Table API 无法访问其字段。

在 Java 中使用 .map(…).returns(TypeInformation) 来声明类型信息。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/1007878
推荐阅读
相关标签
  

闽ICP备14008679号