2014-02-12 5 views
1

Я новичок в 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

ответ

Смежные вопросы