【发布时间】:2014-02-12 10:13:39
【问题描述】:
我是 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
【问题讨论】: