赞
踩
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,则在派生表的架构时,它将在第一级被展平。
DataStream API 并不总是能够基于反射提取更具体的 TypeInformation,这通常由通用 Kryo 序列化程序支持的GenericTypeInfo 导致。
例如 Row 类不能进行反射式分析,并且总是需要显式的类型信息声明,如果在 DataStream API 中未声明正确的类型信息,则该行将显示为 RAW 数据类型,并且 Table API 无法访问其字段。
在 Java 中使用 .map(…).returns(TypeInformation) 来声明类型信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。