我是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 .. ..
...
数学函数:从k = 1到N的1 /(Xi * sum(1 / Xk))
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
最佳答案
使用窗口和分析功能解决
http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.0.2/ds_Hive/language_manual/ptf-window.html
资料来源:https://stackoverflow.com/a/18919834/2568351
关于java - 使用Hive UDF计算权重因子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21724818/