开发者社区 问答 正文

flink 1.12.2 sql-cli 写入Hive报错 is_generic

当配置好HiveCatalog后, SQL-Cli 也可以查到hive库表信息 创建kafka表:

create table test.test_kafka( word VARCHAR ) WITH ( 'connector' = 'kafka', 'topic' = 'xx', 'scan.startup.mode' = 'latest-offset', 'properties.bootstrap.servers' = 'xx', 'properties.group.id' = 'test', 'format' = 'json', 'json.ignore-parse-errors' = 'true' ); 在 Hive里面可以查到改表 hive > DESCRIBE FORMATTED test_kafka ........... is_generic true .........

但是我在 Flink SQL > select * from test.test_kafka; 报错: org.apache.flink.table.api.ValidationException: Unsupported options found for connector 'kafka'. Unsupported options: is_generic Supported options: connector format json.fail-on-missing-field json.ignore-parse-errors*来自志愿者整理的flink邮件归档

展开
收起
小阿怪 2021-12-06 11:52:03 1084 分享 版权
阿里云 AI 助理回答

根据您描述的问题,您在Flink SQL中查询由Kafka源创建的表时遇到了ValidationException,提示不支持的选项is_generic。这表明Flink SQL在尝试读取表配置时遇到了Kafka连接器不识别的配置项。从Hive元数据中描述表时出现的is_generic true可能是导致问题的原因,因为Flink的Kafka connector并不认识这个属性。

问题解决步骤

  1. 检查表定义来源: 确认test_kafka表是否直接通过Flink SQL创建,或者最初是在Hive中定义并同步到Flink的Hive Catalog。由于Hive和Flink的表定义可能包含不同的扩展属性,直接在Hive中定义的表可能包含了Flink不理解的元数据属性,如is_generic

  2. 修改表定义: 如果该表是先在Hive中定义而后被Flink引用,您需要确保所有用于Flink的表定义仅包含Flink支持的选项。对于Kafka Connector,应仅使用Flink所支持的配置项进行表定义。

  3. 重新创建表: 在Flink SQL环境中,按照Flink兼容的语法重新创建此表,避免使用任何非标准或特定于Hive的配置。您的原始创建语句大部分是正确的,但需确保所有配置都与Flink兼容。例如:

    CREATE TABLE test.test_kafka (
     word VARCHAR
    ) WITH (
     'connector' = 'kafka',
     'topic' = 'xx',
     'properties.bootstrap.servers' = 'xx',
     'properties.group.id' = 'test',
     'format' = 'json',
     'json.fail-on-missing-field' = 'false', -- 更正为false以匹配示例中的ignore-parse-errors逻辑
     'json.ignore-parse-errors' = 'true'
    );
    
  4. 验证表定义: 在执行上述创建语句后,再次尝试在Flink SQL CLI中查询该表,命令如下:

    SELECT * FROM test.test_kafka;
    
  5. 注意事项

    • 确保所有表属性遵循Flink SQL的规范,特别是当跨系统(如Hive到Flink)共享元数据时。
    • 若表已存在且无法直接修改,考虑先删除原有表定义,再按正确格式重新创建。

通过以上步骤,您应该能够解决因不支持的配置项导致的查询错误,确保Flink SQL能正常读取Kafka表的数据。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答