之前部门实现row_number是使用的transform,我觉得用UDF实现后,平时的使用会更方便,免去了transform相对繁琐的语法。
之前部门实现row_number是使用的transform,,我觉得用UDF实现后,平时的使用会更方便,免去了transform相对繁琐的语法。
用到的测试表为:
hive> desc row_number_test;
OK
id1 int
id2 string
age int
score double
name string
hive> select * from row_number_test;
OK
2 t04 25 60.0 youlia
1 t01 20 85.0 liujiannan
1 t02 24 70.0 zengqiu
2 t03 30 88.0 hongqu
2 t03 27 70.0 yongqi
1 t02 19 75.0 wangdong
1 t02 24 70.0 zengqiu
使用时要先在子查询中进行分区与排序,比如Oracle中这样一句SQL:
select row_number() over (partition by id1 order by age desc) from row_number_test;
转换为hive语句应该是:
select row_number(id1) from --partition by的字段传到row_number函数中去
(select * from row_number_test distribute by id