Я новичок в Hive, я бы помог написать функцию UDF для расчета весового коэффициента.Расчет весового коэффициента с Hive UDF
Расчет кажется простым.
У меня есть одна таблица с некоторыми значениями КЛЮЧ, ЗНАЧЕНИЕ, сгруппированное по 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 .. ..
...
Math функции: 1/(Xi * сумма (1/Xk)) от к = 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