2015-01-06 2 views
0

Sequencefile 형식으로 저장된 테이블을 쿼리 할 때 하이브 테이블에 표시되는 바이너리 데이터와 관련된 문제가 있습니다. 하이브 시퀀스 파일 읽기

나는, 데이타베이스에서 데이터를 가져올 Sqoop을 사용 다음 옵션을 지정 : 내가 DB 데이터를 가져

--as-sequencefile --fields-terminated-by '\001' --null-string '\\N' --null-non-string ' 

는 위치를 가리 키도록 하이브 외부 테이블을 생성 : 나는 생각했다

CREATE EXTERNAL TABLE if not exists Test(
test_id string, 
s_date timestamp) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\001' 
STORED AS sequencefile 
LOCATION '<location where i importedsqoop data> 

내 Hive tabe는 데이터를 deserialize하고 읽을 수있는 형식으로 데이터를 표시하지만 바이너리 또는 읽을 수없는 foramt로 데이터를 봅니다.

하이브가 데이터를 역 직렬화하기 위해 따라야 할 단계가 더 필요합니까?

감사합니다. 니쉬.

답변

1

Sqoop의 시퀀스 파일 출력이 시퀀스 파일의 하이브 기본 SerDe와 호환되지 않는 것처럼 보입니다. 당신이 필요로하는 Github 프로젝트 Hive-Sqoop-Serde가 있습니다.

1

입력 및 출력 형식도 선언해야합니다. 다음과 같이 표를 만듭니다.

CREATE EXTERNAL TABLE if not exists Test(
test_id string, 
s_date timestamp) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\001' 
STORED AS sequencefile 
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileInputFormat' 
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat' 
LOCATION '<location where i importedsqoop data> 
관련 문제