일단 현재 상황은 MySQL 안에 366996 로우가 들어있는 상황이고, 여기안에 데이터가 있는 상황입니다
여기에 데이터가 있는데, 랭킹을 매겨야 하는 상황입니다.
select B,T,(select count(*)+1 from 9_Spending_blk where T>t.T) as rank from a_blk as t order by rank asc;
SELECT a.B,
a.T,
count(b.T)+1 as rank
FROM 9 a left join 9 b on a.T>b.T and a.B=b.B
group by a.B,
a.T
통해서 RANK를 구하려고 했는데, 생각보다 느리게 되더군요....
MySQL로 구하는거 포기하고HIVE로 옮긴다음 해봤더니 금방 구할수 있었습니다.
절차는 다음과 같습니다.
sqoop import --connect jdbc:mysql://127.0.0.1:3306/my --username root --password xer --table ttt --hive-import –m 1
그다음 Hive에서
select s.d, s.t, rank() over(ORDER by t asc) as rank from ttt as s
했더니, 14초만에 답을 얻을수 있었습니다.
자동으로 맵리듀스 작업이 걸리는게, 직접만들지 않아도 되서, Hive는 역시 좋네요..
이제 이걸 mysql로 돌려보내야하는데..
어떻게 했더라.. sqoop으로 될텐데..
'Study > Bigdata' 카테고리의 다른 글
sqoop export : For input string: "\N" (From Hive to MySQL) (0) | 2016.01.05 |
---|---|
MySQl Memory DB Table is Full (0) | 2015.12.27 |
Sqoop-export : from hive to mysql (0) | 2015.12.23 |
MapReduce :: Type mismatch in value from map (0) | 2015.11.01 |
Sqoop 1.4.6 설치, 사용 예제(Migrating data using sqoop from Mysql to HBase) (0) | 2015.10.29 |
아파치 피닉스(Apache Phoenix) 설치 (0) | 2015.10.20 |