gpt4 book ai didi

hadoop - 当嵌套在子查询中时,Hive UDF给出重复的结果而不管参数如何

转载 作者:行者123 更新时间:2023-12-02 21:46:25 28 4
gpt4 key购买 nike

最近,我开发了Hive Generic UDF getad。它接受映射类型和字符串类型参数,并输出字符串值。但是我发现UDF输出在不同条件下确实令人困惑。

条件A:

select
getad(map_col, 'tp') as tp,
getad(map_col, 'p') as p,
getad(map_col, 'sp') as sp
from
table_name
where
id = xxxx;

输出正确:'tp','p','sp'。

条件B:
select
array(tp, p, sp) as ps
from
(
select
getad(map_col, 'tp') as tp,
getad(map_col, 'p') as p,
getad(map_col, 'sp') as sp
from
table_name
where
id = xxxx
) t;

输出错误:“tp”,“tp”,“tp”。

您能给我一些提示吗?谢谢!

最佳答案

设置hive.cache.expr.evaluation = false后,所有查询都会输出预期结果。

而且我发现它与UDF中的getDisplayString函数有关。首先,该函数返回一个字符串,而不管其参数如何。而且我必须设置hive.cache.expr.evaluation = false。

但是在更改函数以根据参数返回字符串之后,即使hive.cache.expr.evaluation设置为true,所有查询也会返回预期结果。

关于hadoop - 当嵌套在子查询中时,Hive UDF给出重复的结果而不管参数如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24879408/

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