2013-07-08 3 views

답변

0

그것은이 유사합니다 (a.column2 내림차순으로 a.column1 순서에 의해 분할, d.column3 내림차순) = 1

미안 해요를 통해 ROW_NUMBER()를 자격이 I 이것을 얻지 못했습니다. 하이브 또는 MR을 통해이 목표를 달성하려고합니까? 귀하의 질문에 MR이 필요하지만이 쿼리가 표시되었습니다. 둘 다 완전히 다릅니다.

하이브를 통해이를 실현하려는 경우이 post이 유용 할 수 있습니다. 그리고이 MR 방식을 원한다면 처음부터 코드를 작성해야합니다. 아래

HTH

+0

안녕 타리크, 나는 하이브에서 할 수 있지만, 우리가 Mapreduce.I에서 동일한 작업을 수행 의미합니다, 우리는 변환 할 필요 hive와 mapreduce 성능을 클라이언트에게 보여주기 위해 mapreduce에 하이브 쿼리를 추가합니다. – pras

0

는 일반 쿼리를 사용하여 순위 함수의 복제입니다.

이 쿼리는 데이터베이스와 관계없이 실행됩니다. 요구 사항은 파일 이름의 날짜를 기반으로 파일 이름의 순위를 매기는 것입니다.

**Sample Records**: 
`insert into ref values('840001','840001_2015_04_29'); 
insert into ref values('840002','840002_2015_04_29'); 
insert into ref values('840003','840003_2015_04_29'); 
insert into ref values('840004','840004_2015_04_29'); 
insert into ref values('840008','840008_2015_04_28'); 
insert into ref values('840009','840009_2015_05_02'); 
insert into ref values('850005','850010_2015_05_29'); 
insert into ref values('850005','850010_2015_05_23'); 
insert into ref values('850005','850010_2015_05_12'); 
insert into ref values('850005','850010_2015_05_17'); 
insert into ref values('850006','850010_2015_05_29'); 
insert into ref values('850006','850010_2015_05_23'); 
insert into ref values('850006','850010_2015_05_16');` 

`**Table Structure**: 
CREATE TABLE ref 
(
    ffid TEXT 
    ,filename  TEXT 
);` 

**Query**: 
SELECT 
    S1.FFID 
    ,S1.FILENAME 
    ,(
    SELECT COUNT(*) + 1 
    FROM 
    (SELECT DISTINCT FFID,FILENAME FROM REF) AS S2 
    WHERE S1.FFID=S2.FFID AND S1.FILENAME < S2.FILENAME 
    ) AS RANK 
FROM 
    (SELECT DISTINCT FFID,FILENAME FROM REF) AS S1 
WHERE RANK=1 
ORDER BY FFID ; 
관련 문제