- 应用开发
- Table API & SQL
- Hive 集成
- Hive 函数
Hive 函数
本文档是 Apache Flink 的旧版本。建议访问 最新的稳定版本。
通过 HiveModule 使用 Hive 内置函数
在 Flink SQL 和 Table API 中,可以通过系统内置的 HiveModule
来使用 Hive 内置函数,
详细信息,请参考 HiveModule。
- 请注意旧版本的部分 Hive 内置函数存在线程安全问题。
我们建议用户及时通过补丁修正 Hive 中的这些问题。
Hive 用户自定义函数(User Defined Functions)
在 Flink 中用户可以使用 Hive 里已经存在的 UDF 函数。
支持的 UDF 类型包括:
- UDF
- GenericUDF
- GenericUDTF
- UDAF
- GenericUDAFResolver2
在进行查询规划和执行时,Hive UDF 和 GenericUDF 函数会自动转换成 Flink 中的 ScalarFunction,GenericUDTF 会被自动转换成 Flink 中的
TableFunction,UDAF 和 GenericUDAFResolver2 则转换成 Flink 聚合函数(AggregateFunction).
想要使用 Hive UDF 函数,需要如下几步:
- 通过 Hive Metastore 将带有 UDF 的 HiveCatalog 设置为当前会话的 catalog 后端。
- 将带有 UDF 的 jar 包放入 Flink classpath 中,并在代码中引入。
- 使用 Blink planner。
使用 Hive UDF
假设我们在 Hive Metastore 中已经注册了下面的 UDF 函数:
在 Hive CLI 中,可以查询到已经注册的 UDF 函数:
此时,用户如果想使用这些 UDF,在 SQL 中就可以这样写: