Hive内置函数

更新时间:2025-03-24 06:04:06

本文为您介绍实时计算Flink版支持的Hive内置函数以及使用方法。

使用限制

  • 仅实时计算FlinkVVR 8.0.11及以上版本支持Hive内置函数。

  • 暂不支持Hive自定义函数。

使用Hive内置函数

Hive方言作业
Flink SQL作业

Flink SQL作业中,可以通过管理Hive Catalog直接调用Hive内置函数,当FlinkHive存在同名函数时,引擎默认优先采用Hive方言实现,确保跨引擎的函数行为一致性。该作业无需额外配置即可获得与原生Hive环境相同的函数语义。详情请参见Hive方言作业快速入门

Flink SQL作业中通过Hive Connector JAR使用Hive内置函数,操作步骤如下:

  1. 依赖配置。

    1. 获取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.2flink-sql-connector-hive-3.1.3_2.12/1.17.2

      重要
      • VVR版本和Apache Flink版本对应关系请参见引擎

      • Flink仅支持Hive 2.0.0~2.3.93.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版本。

    2. 上传和配置依赖。

      1. 登录实时计算控制台

      2. 在左侧导航栏,单击文件管理

      3. 单击上传资源,上传Hive连接器JAR包。

      4. 在左侧导航栏,单击数据开发 > ETL

      5. 单击新建,创建作业草稿。

        作业引擎版本需与Hive连接器JAR包的Flink版本号对应。

      6. 单击作业草稿右侧更多配置,选择Hive连接器JAR包。

        1

  2. 模块加载。

    1. 加载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 ModuleFlink 1.20 Hive Module的函数覆盖范围及语法限制)。

    2. 验证模块状态。

      1. 拷贝如下SQLSQL编辑区。

        LOAD MODULE hive WITH('hive-version' = '2.3.9');
        
        SHOW MODULES;
      2. 选中SQL,单击右键后,单击运行。确认Hive模块已加载,并检查顺序以确保函数解析优先级。 

      image

Flink SQL作业中调用Hive内置函数时,若函数名称与Flink内置函数冲突,系统默认优先采用Flink Core Module中的函数实现,因其加载顺序早于Hive Module。您可以通过以下SQL调整加载的顺序。

USE MODULES `sql-gateway-module`,`hive`, `core`;
重要

sql-gateway-moduleVVR内部编译模块,其优先级不可调整,仅可对hivecore的优先级进行调整。

执行完之后,会优先采用Hive Module中的函数实现。

image

支持的函数

Hive内置函数在Flink中按解析和执行阶段被映射为标量函数(ScalarFunction)、表值函数(TableFunction)及聚合函数(AggregateFunction)。不同Flink版本支持的函数存在差异,您可通过版本文档(如Hive Functions | Flink 1.17Hive Functions | Flink 1.20)查询限制条件。Hive原生函数列表可参考LanguageManual UDF,但需注意Flink仅实现部分核心函数。

您可以通过以下语句验证Flink会话支持的完整函数列表:

LOAD MODULE hive WITH('hive-version' = '2.3.9');

SHOW FUNCTIONS;

image

  • 本页导读
  • 使用限制
  • 使用Hive内置函数
  • 支持的函数