新來級聯,試圖找到一種方法來獲得基於排序/順序的前N個元組。例如,我想知道人們使用的前100名。hadoop層疊如何獲取頂部N元組
這裏就是我可以在Teradata的SQL做類似:
select top 100 first_name, num_records
from
(select first_name, count(1) as num_records
from table_1
group by first_name) a
order by num_records DESC
下面是Hadoop的豬相似
a = load 'table_1' as (first_name:chararray, last_name:chararray);
b = foreach (group a by first_name) generate group as first_name, COUNT(a) as num_records;
c = order b by num_records DESC;
d = limit c 100;
這似乎很容易在SQL或豬的事,但有一個困難時期嘗試找到一種方式來實現級聯。請指教!
Engineiro嗨,我覺得你是在「FIRST_NAME」字段分組的,和排序在同一組內的num_records上,即僅在具有相同名字的組內進行排序。但是我想在這裏做的是獲得頂級名字。排序一組,然後得到頂部行。 – Kartrace 2013-04-30 21:36:40
到目前爲止,我能想到的是在{first_name,num_records}方案中添加一個常量字段,並在該常量字段上對其進行分組以獲得單個組。然後在num_records上排序,並得到最高的N. – Kartrace 2013-04-30 21:39:36
你是對的。我做了一些編輯。請記住,這是所有本地排序。一般而言,Hadoop和級聯並不十分熱衷於總體排序。對於總體排序,您需要一個級聯減速器。 – Engineiro 2013-05-01 13:40:46