
# Hive方言
#### 简介
从Flink 1.11.0 开始，在使用Hive方言时，Flink允许用户用Hive语法来编写SQL语句。通过提供与Hive语法的兼容性，改善与Hive的互操作性，并减少用户需要在Flink和Hive之间切换来执行不同语句的情况。详情可参考：[Apache Flink Hive 方言](https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/connectors/table/hive/hive_dialect/)
#### 功能描述
Flink目前支持两种SQL 方言: default 和 hive。您需要先切换到Hive 方言，然后才能使用Hive语法编写。下面介绍如何使用SQL设置方言。
您可以为执行的每个语句动态切换方言。无需重新启动会话即可使用其他方言。
#### 语法格式
SQL 方言可以通过 table.sql-dialect 属性指定
```
set table.sql-dialect=hive;
```
#### 注意事项
- Hive方言只能用于操作Hive对象，并要求当前Catalog是一个[HiveCatalog](https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/connectors/table/hive/hive_catalog/) 。
- Hive方言只支持db.table这种两级的标识符，不支持带有Catalog名字的标识符。更多信息请参考[Apache Flink Hive Read \& Write](https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/connectors/table/hive/hive_read_write/)。
  虽然所有Hive版本支持相同的语法，但是一些特定的功能对Hive版本有依赖，请参考[Hive 版本](https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/connectors/table/hive/overview/#支持的hive版本)。
  例如，更新数据库位置 只在 Hive-2.4.0 或更高版本支持。
  
- 执行DML和DQL时应该使用[HiveModule](https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/connectors/table/hive/hive_functions/#use-hive-built-in-functions-via-hivemodule) 。
- 从Flink 1.15版本开始，在使用Hive方言抛出以下异常时，请尝试用opt目录下的 flink-table-planner_2.12 jar包来替换lib目录下的flink-table-planner-loader jar包。具体原因请参考 [FLINK-25128](https://issues.apache.org/jira/browse/FLINK-25128)。
 
