使用 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 计算权重因子的主要内容,如果未能解决你的问题,请参考以下文章

Hive 如何实现自定义函数 UDF

Hive 如何实现自定义函数 UDF

不知道怎样计算权重?告诉你8种确定权重方法

hive自定义函数UDF UDTF UDAF

多因子策略-回测阶段应用

hive中分组计算top N.