跳到主要内容

16、FlinkSQL - FLINK-24950 registerTemporaryFunction NullPointerException

问题

Flink SQL 使用Hive Dialect,同时Hive使用1.1.0-CDH5.x.x,报错:

Exception in thread "main" java.lang.NullPointerException
    at org.apache.flink.table.catalog.hive.client.HiveShimV100.registerTemporaryFunction(HiveShimV100.java:422)
    at org.apache.flink.table.planner.delegation.hive.HiveParser.parse(HiveParser.java:217)
    at org.apache.flink.table.api.internal.TableEnvironmentImpl.executeSql(TableEnvironmentImpl.java:724)

详细场景参见 FLINK-24950

分析

Apache Hive 1.1.0-CDH5.x.x 有问题,按照FLINK-24950所说,需要升级到Hive-1.2.0,然而CDH似乎没有 Hive-1.2.0,直接 Hive-2.x.x。

因此需要修改 Apache Hive 1.1.0-CDH5.x.x的源码。

FLINK-24950 说到:

hive. 1.1.0, and it does have the method.

因此可以从 Apache Hive 1.1.0 的源码移植到 Apache Hive 1.1.0-CDH5.x.x。

解决

直接增加registerTemporaryFunction的实现。