更新时间:2024-04-19 GMT+08:00

Hive方言

简介

从Flink 1.11.0 开始,在使用Hive方言时,Flink允许用户用Hive语法来编写SQL语句。通过提供与Hive语法的兼容性,改善与Hive的互操作性,并减少用户需要在Flink和Hive之间切换来执行不同语句的情况。详情可参考:Apache Flink Hive 方言

功能描述

Flink目前支持两种SQL 方言: default 和 hive。你需要先切换到Hive 方言,然后才能使用Hive语法编写。下面介绍如何使用SQL设置方言。

您可以为执行的每个语句动态切换方言。无需重新启动会话即可使用其他方言。

语法格式

SQL 方言可以通过 table.sql-dialect 属性指定

1
set table.sql-dialect=hive;

注意事项

  • Hive方言只能用于操作Hive对象,并要求当前Catalog是一个HiveCatalog
  • Hive方言只支持db.table这种两级的标识符,不支持带有Catalog名字的标识符。更多信息请参考Apache Flink Hive Read & Write

    虽然所有Hive版本支持相同的语法,但是一些特定的功能对Hive版本有依赖,请参考Hive 版本

    例如,更新数据库位置 只在 Hive-2.4.0 或更高版本支持。

  • 执行DML和DQL时应该使用HiveModule
  • 从Flink 1.15版本开始,在使用Hive方言抛出以下异常时,请尝试用opt目录下的 flink-table-planner_2.12 jar包来替换lib目录下的flink-table-planner-loader jar包。具体原因请参考 FLINK-25128