gpt4 book ai didi

hadoop - 在 Impala 中使用 Hive UDF 在 Impala 1.2.4 中给出错误结果

转载 作者:可可西里 更新时间:2023-11-01 16:55:47 25 4
gpt4 key购买 nike

我有两个 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 中得到解决,但我不能将我的集群升级到它。

那么我该如何解决这个错误呢?

引用:http://www.cloudera.com/content/cloudera/en/documentation/cloudera-impala/v1/v1-2-4/Installing-and-Using-Impala/ciiu_udf.html

最佳答案

这是 IMPALA-1134在 Impala 2.1 中已修复。问题是返回值以错误的方式复制,因此可能会在字符串末尾返回一些额外的内存。以前我们使用 getBytes()这表示只有 getLength() 之前的数据是有效的。我认为可以尝试在输出中编码真实长度,然后在你的反转函数中,采用真实长度并且只使用有效部分。然而,这似乎很棘手。我强烈建议找到一种方法来升级到最新版本的 Impala,因为自 1.4 以来修复了许多错误。

关于hadoop - 在 Impala 中使用 Hive UDF 在 Impala 1.2.4 中给出错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30125455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com