我是Hive的新手,我会帮助编写一个UDF函数来计算加权因子。
计算似乎很简单。
我有一个表格,其中包含 KEY,VALUE按GROUP_ID 分组的值。对于一组中的每一行,我想计算加权因子, 0和1之间的浮点数,即该组元素的权重。 组中加权因子的总和必须为1.
在此示例中,值是距离,然后权重与距离成反比。
GROUP_ID | KEY | VALUE(DISTANCE)
====================================
1 10 4
1 11 3
1 12 2
2 13 1
2 14 5
3 .. ..
...
数学函数:1 /(Xi * sum(1 / Xk))从k = 1到N)
GROUP_ID | KEY | VALUE | WEIGHTING_FACTOR
=======================================================
1 10 4 1/(4*(1/4+1/3+1/2)) = 0.23
1 11 3 1/(3*(1/4+1/3+1/2)) = 0.31
1 12 2 1/(2*(1/4+1/3+1/2)) = 0.46
2 13 1 1/(1*(1/1+1/5)) = 0.83
2 14 5 1/(5*(1/1+1+5)) = 0.17
3 .. ..
...
您是否建议使用UDF,UDAF或UDTF功能?
也许我必须使用“变换”? https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Transform
答案 0 :(得分:1)