使用 Hive UDF 计算权重因子
Posted
技术标签:
【中文标题】使用 Hive UDF 计算权重因子【英文标题】:Weighting Factor calculation with Hive UDF 【发布时间】: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
【问题讨论】:
【参考方案1】:使用窗口化和分析函数解决
http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.0.2/ds_Hive/language_manual/ptf-window.html
来源:https://***.com/a/18919834/2568351
【讨论】:
以上是关于使用 Hive UDF 计算权重因子的主要内容,如果未能解决你的问题,请参考以下文章