Типы полей результата запроса и зарегистрированного TableSink не совпадают - PullRequest
0 голосов
/ 24 февраля 2020

Схема результата запроса, напечатанная table.printSchema ():

 |-- deviceId: BIGINT
 |-- channel: STRING
 |-- schemaId: BIGINT
 |-- productId: BIGINT
 |-- schema: LEGACY('RAW', 'ANY<com.yunmo.iot.schema.Schema>')

ошибка при исключении table.toRetractStream [DeviceSchema] .print (), сгенерированное исключение:

Exception in thread "main" org.apache.flink.table.api.ValidationException: Field types of query result and registered TableSink  do not match.
Query schema: [deviceId: BIGINT, channel: STRING, schemaId: BIGINT, productId: BIGINT, schema: RAW('com.yunmo.iot.schema.Schema', ?)]
Sink schema: [deviceId: BIGINT, channel: STRING, schemaId: BIGINT, productId: BIGINT, schema: LEGACY('RAW', 'ANY<com.yunmo.iot.schema.Schema>')]

Тип com.yunmo.iot.schema.Schema является родовым c типом.

Поле схемы схемы запроса изменяется с LEGACY ('RAW' на RAW, но схема Sink по-прежнему является LEGACY ('RAW) «

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Я видел, что вы создали проблему по этому поводу: https://issues.apache.org/jira/browse/FLINK-16269. И да, это ошибка в планировщике мерцания, мы исправим ее в 1.10.1. Вы можете использовать старый планировщик в качестве обходного пути сейчас.

0 голосов
/ 24 февраля 2020

К сожалению, доработка системы типов в Flink's Table & SQL API еще не завершена и, возможно, не все слои хорошо сочетаются друг с другом. Как вы определили свой тип данных? Вы смешиваете DataType и устаревшие Types? Последовательное использование Types должно решить проблему на данный момент. В противном случае, не стесняйтесь открывать проблему на трекере проблем Флинка.

...