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。