gpt4 book ai didi

java - Flink 架构与表架构

转载 作者:行者123 更新时间:2023-12-01 19:34:11 25 4
gpt4 key购买 nike

我正在使用 Flink SQL API,我在所有“模式”类型之间有点迷失:TableSchemaSchema(来自 org.apache.flink .table.descriptors.Schema)和TypeInformation

TableSchema 可以从 TypeInformation 创建,TypeInformation 可以从 TableSchemaSchema 可以从 TableSchema

创建

但看起来Schema无法转换回TypeInformationTableSchema(?)

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

例如,假设我有一个来自 Avro 架构文件的字符串架构,并且我想向其中添加一个新字段。为此,我找到的唯一解决方案是:

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

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

最佳答案

TypeInformationTableSchema 解决不同的问题。 TypeInformation 是如何将记录类(例如行或 POJO)从一个运算符(operator)传送到另一个运算符(operator)的物理信息。

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

Schema 是指定非 SQL 概念(例如时间属性和字段映射)的当前方法。

关于java - Flink 架构与表架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58447970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com