MapReduce服务 MRS-Flink任务开发建议:使用Hive SQL时如果Flink语法不兼容则可切换Hive方言

时间:2025-02-12 15:03:27

使用Hive SQL时如果Flink语法不兼容则可切换Hive方言

当前Flink支持的SQL语法解析引擎有default和Hive两种,第一种为Flink原生SQL语言,第二种是Hive SQL语言。因为部分Hive语法的DDL和DML无法用Flink SQL运行,所以遇到这种SQL可直接切换成Hive的dialect。使用Hive dialect需要注意:

  • Hive dialect只能用于操作Hive表,不能用于普通表。Hive方言应与HiveCatalog一起使用。
  • 虽然所有Hive版本都支持相同的语法,但是是否有特定功能仍然取决于使用的Hive版本。例如仅在Hive-2.7.0或更高版本中支持更新数据库位置。
  • Hive和Calcite具有不同的保留关键字。例如default在Calcite中是保留关键字,在Hive中是非保留关键字。所以在使用Hive dialect时,必须使用反引号(`)引用此类关键字,才能将其用作标识符。
  • 在Hive中不能查询在Flink中创建的视图。

【示例】修改SQL解析为Hive语法(sql-submit-defaults.yaml):

configuration:  table.sql-dialect: hive
support.huaweicloud.com/devg-rule-mrs/mrs_07_450167.html