2013-04-16 1 views
0

У меня есть таблица hive с полем 'a' (int), 'b' (string), 'c' (bigint), 'd' (bigint) и 'e' (string).
У меня есть данные, как:Dedup using HiveQL

a b c d e 
--------------- 
1 a 10 18 i 
2 b 11 19 j 
3 c 12 20 k 
4 d 13 21 l 
1 e 14 22 m 
4 f 15 23 n 
2 g 16 24 o 
3 h 17 25 p 

Таблица отсортирована по ключевому слову 'Ъ'.
Теперь мы хотим, чтобы выход, как показано ниже:

a b c d e 
--------------- 
1 e 14 22 m 
4 f 15 23 n 
2 g 16 24 o 
3 h 17 25 p 

который будет deduped на клавишу «а», но будет держать последний (последние) «B».

Возможно ли использование запроса на прием (HiveQL)?

+0

Это может быть выражено в очень простой Map/Reduce работу, которая имеет только картографа. – Olaf

+0

Но мне нужно сделать это с помощью HIVE – chanchal1987

ответ

1

Если столбец б уникален, попробуйте следовать HQL:

select 
* 
from 
(
    select max(b) as max_b 
    from 
    table 
    group by a 
) table1 
join table on table1.max_b = table.b