2017-03-02 2 views
1

사용자 지정 레코드 수가있는 하이브 테이블을 만들 수 있습니까?사용자 지정 레코드 수로 하이브 테이블을 만드는 방법은 무엇입니까?

예를 들어 x 행 (x는 사용자가 정의)의 테이블을 만들고 싶습니다. 테이블에는 두 개의 열이 있습니다. 1. 고유 행 ID [자동 증가 가능] 2. 임의로 생성 된 문자열.

하이브를 사용하면 가능합니까? 테이블을 만들 때에 행의 수에 제한을 지정

+0

추신 너의 것의 또 다른 포스트가 있었다 - http://stackoverflow.com/questions/42562705/how-to-generate-large-amount-of-data-using-mapreduce-process. 나는 왜 당신이 그것을 삭제했는지 궁금하다. –

답변

0

은 가능하지만, 가능한 한 그 LIMIT

-- <filename:dbloader.sql> 

create table {hiveconf:TABLENAME} (id int, string1 string) 

insert into newtable 
select id,string1 from oldtable limit {hiveconf:ROWLIMIT}; 

을 사용하여 표에 삽입 될 수있는 행의 수를 제한하고, 하이브을 제출하면서 않을 수도 스크립트 -

hive --hiveconf TABLENAME='XYZ' --hiveconf ROWLIMIT=1000 -f dbloader.sql 

고유 한 증분 ID를 만드는 한 그것에 대한 UDF를 작성해야합니다.

+0

incremental id에 row_number()를 사용할 수있다. –

+1

질문에 답변이 없습니다. –

0
set N=7; 

select pe.i+1                   as n 
     ,java_method ('org.apache.commons.lang.RandomStringUtils','randomAlphabetic',10) as str 

from (select 1) x 
     lateral view posexplode(split(space(${hiveconf:N}-1),' ')) pe as i,x 
; 

+---+------------+ 
| n | str  | 
+---+------------+ 
| 1 | udttBCmtxT | 
| 2 | kkrMQmirSG | 
| 3 | iYDABgXOvW | 
| 4 | DKHKgtXKPS | 
| 5 | ylebKcdcGj | 
| 6 | DaujBCkCtz | 
| 7 | VMaWfbtzFY | 
+---+------------+ 

posexplode
java_method
RandomStringUtils