使用Hive UDF计算加权因子

时间:2014-02-12 10:13:39

标签: java hadoop hive

我是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