本文为您介绍实时计算Flink版支持的Hive内置函数以及使用方法。
使用限制
仅实时计算Flink版VVR 8.0.11及以上版本支持Hive内置函数。
暂不支持Hive自定义函数。
使用Hive内置函数
在Flink SQL作业中,可以通过管理Hive Catalog直接调用Hive内置函数,当Flink与Hive存在同名函数时,引擎默认优先采用Hive方言实现,确保跨引擎的函数行为一致性。该作业无需额外配置即可获得与原生Hive环境相同的函数语义。详情请参见Hive方言作业快速入门。
在Flink SQL作业中通过Hive Connector JAR使用Hive内置函数,操作步骤如下:
依赖配置。
获取Hive Connector JAR。
根据VVR版本选择兼容的Hive连接器JAR包(例如VVR 8.0.11版本和Hive 2.3.x版本对应的Hive连接器是flink-sql-connector-hive-2.3.9_2.12-1.17.2.jar),您可以前往Maven中央仓库下载flink-sql-connector-hive-2.3.9_2.12/1.17.2、flink-sql-connector-hive-3.1.3_2.12/1.17.2。
VVR版本和Apache Flink版本对应关系请参见引擎。
Flink仅支持Hive 2.0.0~2.3.9和3.1.0~3.1.3版本。Hive连接器版本选取情况如下:
对于Hive 2.0.x、2.1.x版本,Hive连接器选取2.2.0版本。
对于Hive 2.2.x、2.3.x、3.1.x版本,Hive连接器分别选取2.2.0、2.3.9、3.1.3版本。
上传和配置依赖。
登录实时计算控制台。
在左侧导航栏,单击文件管理。
单击上传资源,上传Hive连接器JAR包。
在左侧导航栏,单击
。单击新建,创建作业草稿。
作业引擎版本需与Hive连接器JAR包的Flink版本号对应。
单击作业草稿右侧更多配置,选择Hive连接器JAR包。
模块加载。
加载Hive Module。
通过SQL指令加载指定版本的Hive Module。
LOAD MODULE hive WITH('hive-version'='2.3.9'); --需与JAR的版本匹配
在配置Hive Module时,
hive-version
参数必须与Hive连接器JAR的版本严格匹配(例如使用flink-sql-connector-hive-2.3.9_2.12-1.17.2.jar
时需声明hive-version='2.3.9'
),以确保函数加载机制与Hive元数据兼容。不同Flink版本对Hive Module的支持特性存在差异,需通过官方文档验证版本适配性(如Flink 1.17 Hive Module与Flink 1.20 Hive Module的函数覆盖范围及语法限制)。验证模块状态。
拷贝如下SQL到SQL编辑区。
LOAD MODULE hive WITH('hive-version' = '2.3.9'); SHOW MODULES;
选中SQL,单击右键后,单击运行。确认Hive模块已加载,并检查顺序以确保函数解析优先级。
在Flink SQL作业中调用Hive内置函数时,若函数名称与Flink内置函数冲突,系统默认优先采用Flink Core Module中的函数实现,因其加载顺序早于Hive Module。您可以通过以下SQL调整加载的顺序。
USE MODULES `sql-gateway-module`,`hive`, `core`;
sql-gateway-module是VVR内部编译模块,其优先级不可调整,仅可对hive和core的优先级进行调整。
执行完之后,会优先采用Hive Module中的函数实现。
支持的函数
Hive内置函数在Flink中按解析和执行阶段被映射为标量函数(ScalarFunction
)、表值函数(TableFunction
)及聚合函数(AggregateFunction
)。不同Flink版本支持的函数存在差异,您可通过版本文档(如Hive Functions | Flink 1.17、Hive Functions | Flink 1.20)查询限制条件。Hive原生函数列表可参考LanguageManual UDF,但需注意Flink仅实现部分核心函数。
您可以通过以下语句验证Flink会话支持的完整函数列表:
LOAD MODULE hive WITH('hive-version' = '2.3.9');
SHOW FUNCTIONS;
- 本页导读
- 使用限制
- 使用Hive内置函数
- 支持的函数