Я использую Flink SQL API, и я немного потерян между всеми типами 'схемы': TableSchema
, Schema
(из org.apache.flink.table.descriptors.Schema
) и TypeInformation
.
A TableSchema
может быть создан из TypeInformation
, TypeInformation
может быть создан из TableSchema
, а Schema
может быть создан из TableSchema
Но похоже, что Schema
не можетбыть преобразованным обратно в TypeInformation
или TableSchema
(?)
Почему существует 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
Является ли это нормальным способом использования этих объектов? (выглядит странно для меня)