【发布时间】:2015-07-19 11:10:28
【问题描述】:
我有两个使用 Java 的 Hive UDF 在 Hive 中非常好。
这两个功能互为补充。
String myUDF(BigInt)
BigInt myUDFReverso(String)
myUDF("myInput") 给出一些输出
当myUDFReverso(myUDF("myInput"))
应该回馈myInput
这在 Hive 中有效,但是当我尝试使用时
它在 Impala(版本 1.2.4)中给出了预期
回答myUDF(BigInt)(打印的答案是正确的)
但是传递给myUDFReverso(String) 的答案没有给出
返回原始答案)。
我注意到 Impala 1.2.4 中的 length(myUDF("myInput"))
是错的。每行都是+1。然后再次
在 Hive 和 Impala(2.1 版)的情况下是正确的
所以,我假设附加了一些额外的(特殊)字符
在 Impala 1.2.4 中 myUDF 的输出末尾(正好在末尾
从 UDF 函数返回的 Text 数据类型)。
我在 Cpp 中为 Impala 1.2.4 构建了一个类似的 UDF,它可以正常工作。
Impala 2.1 中解决了所有这些问题,但我不能 将我的集群升级到它。
那么我该如何解决这个错误呢?
【问题讨论】:
标签: hadoop hive cloudera-cdh impala udf