Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
MariaDB의 study데이타 베이스에 접근하여 product테이블의 데이타를 가져와서 study/out/productimport에 저장하는 sqoop문장이다.
이때 컬럼구분자는 '\001'(^A)를 사용하고 라인구분자는 '\003'(^C)를 사용한다.
hive폴더에 저장되는 라인은 price >1인 조건을 만족해야하며 productID및 name만 저장된다
이렇게 하면 컬럼에 newline(\n)이 있어도 문제없이 가져올 수 있다.
sqoop import \
--connect=jdbc:mysql://gsda3:포트/study \
--username=db사용자\
--password=패스워드\
--table=product \
--target-dir=study/out/productimport \
--fields-terminated-by='\001' \
--lines-terminated-by='\003'
--where="price > 1 " \
--columns="productID, name"
아래는 위에서 sqoop로 가져온 데이타에 대한 external table을 생성하는 hive명령문이다.
hive 1.1에서 기본적으로 지원하는 라인 구분자는 '\n'만 지원한다.
하지만 textinputformat.record.delimiter을 이용하여 라인 구분자를 변경할 수 있다.
set textinputformat.record.delimiter='\003';
create external table productimport
(productID string, name string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS TEXTFILE
LOCATION 'study/out/productimport';