2014-07-15 4 views
0

1 억 개의 행을 포함하는 데이터가 있습니다.이 테이블을 각각 1,000 만 개의 테이블로 분할해야합니다. 하이브에서는 어떻게 수행 할 수 있습니까?하이브의 여러 테이블로 데이터를 분할

유효 SQL 쿼리는 다음과 같습니다

select * from Customers where rownum>0 and rownum<=1000000 
select * from Customers where rownum>1000000 and rownum<=2000000 

등등 ..

감사

답변

2

당신이 최신 버전을 사용하는 경우 하이브는 analytics functionROW_NUMBER 있습니다.

from (select Customers.*, rand() as r from Customers) t 
insert overwrite table Customers_sample1 select * where r < 0.1 
insert overwrite table Customers_sample2 select * where r >=0.1 and r < 0.2 
insert overwrite table Customers_sample3 select * where r >=0.2 and r < 0.3 
... 
:

그렇지 않으면, 당신은 뭔가를 할 수

관련 문제