首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flink Schema vs Table Schema

Flink Schema vs Table Schema
EN

Stack Overflow用户
提问于 2019-10-18 17:31:01
回答 1查看 567关注 0票数 0

我使用的是Flink SQL API,我对所有的“模式”类型都有点迷惑:TableSchemaSchema (来自org.apache.flink.table.descriptors.Schema)和TypeInformation

可以通过TypeInformation创建TableSchema,可以通过TableSchema创建TypeInformation,可以通过TableSchema创建Schema

但是看起来Schema不能转换回TypeInformationTableSchema (?)

为什么有3种不同类型的对象来存储相同类型的信息?

例如,假设我有一个来自Avro模式文件的string Schema,并且我想向其中添加一个新字段。要做到这一点,我找到的唯一解决方案是:

代码语言:javascript
复制
String mySchemaRaw = ...;
TypeInformation<Row> typeInfo = AvroSchemaConverter.convertToTypeInfo(mySchemaRaw);
Schema newSchema = new Schema().schema(TableSchema.fromTypeInfo(typeInfo));
newSchema = newSchema.field("nexField",...);


// Need the newSchema as a TableSchema 

这是使用这些对象的正常方式吗?(在我看来很奇怪)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-18 23:27:06

TypeInformationTableSchema解决了不同的问题。TypeInformation是如何将记录类(例如,行或POJO)从一个操作符发送到另一个操作符的物理信息。

TableSchema描述独立于基础的每记录类型的表的模式。它类似于CREATE TABLE name (a INT, b BIGINT) DDL语句的模式部分。在SQL中,也没有定义像CREATE TABLE name ROW(a INT, B BIGINT)这样的表。但是,模式和行类型确实是相关的,这就是提供转换器方法的原因。一旦引入了PRIMARY KEY等概念,差异就会变得更大。

Schema是当前指定时间属性和字段映射等非SQL概念的方式。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58447970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档