1. 최신행 Import
스쿱은 최신행만 가져올 수 있는 기능을 제공한다. 예를 들어 2020-10-14일 이후의 열들을 가져오고 싶을 경우 사용될 수 있다.
인자 | 설명 |
---|---|
--check-column (col) | 가져올 행을 결정할 기준 열을 지정 (CHAR/NCHAR/VARCHAR/VARNCHAR/ LONGVARCHAR/LONGNVARCHAR 타입은 기준열로 지정불가) |
--incremental (mode) | 가져올 행을 결정하는 방법을 지정 |
--last-value (value) | 가져올 열의 값에 대한 최대값을 지정 |
--incremental 인자는 두가지 타입을 지정할 수 있는데 하나는 append와 lastmodified이다.
[append]
append사용시 --check-column을 지정하고(예시에선 ID로 지정) --last-value를 500으로 지정한다. 즉 id가 500보다 큰 행을 가져오는 결과 값을 가진다.
sqoop import --connect jdbc:mysql://localhost:3306/dbname --table tt1 --username root -P --check-column id --incremental append --last-value 500
[lastmodified]
lastmodified사용시 수정된 열의 값이 --last-value로 지정된 타임스탬프보다 최근인 열을 가져온다.
sqoop import --connect jdbc:mysql://localhost:3306/dbname --table tt1 --username root -P --check-column update_date --incremental lastmodified --last-value '
2020-08-24 22:04:56.0'
2. 파일포맷
일반적으로 'delimited text'와 'sequenceFiles' 포맷을 지원한다.
[ Delimited text ]
Delimited text형식이 default이며 --as-textfile 인자로 명시적으로 지정할 수 도 있다. 'ROW FORMAT' 옵션을 활용, delimited를 설정해 HIVE에서도 활용 할 수 있다.
1,here is a message,2010-05-01 2,happy new year!,2010-01-01 3,another message,2009-11-12
[ SequenceFiles ]
SequenceFiles는 이진 형식 저장타입이다. 모든 데이터의 정확한 저장을 지원하며 Java클래스로 표현할 수 있어 MapReduce프로그램에서 사용되는 데이터를 저장하기에 적합하다. 그 중 대표적인게 다른 프로그래밍 언어로 작성된 데이터도 확장가능하여 효율적인 Avro데이터타입이다.
[ 압축 ]
default는 비압축형식인데 압축을 위해선 --compress인수를 활용할 수 있으며, 하둡압축코덱을 위한 --compression-codec도 지원한다.
3. Large Data 처리
스쿱은 큰 데이터(BLOB, CLOB)를 처리하기 적합하다. BLOB는 바이너리 데이터로 RDB외부에 저장하기 위한 데이터타입이다. CLOB는 문자열 데이터를 저장하기 위한 타입.
스쿱은 이를 처리하기 위해 메모리에 전부 올려놓치 않고 스트리밍 방식으로 처리할 수 있게 인라인으로 저장한다. 인라인 데이터를 통해 모든 데이터를 액세스 할 수 있다.
사용할 수 인자는 아래와 같다.
인자 | 설명 |
---|---|
--enclosed-by <char> | 필수 포함 필드 문자 설정 |
--escaped-by <char> | 이스케이프 문자 설정 |
--fields-terminated-by <char> | 필드 구분 문자 설정 |
--lines-terminated-by <char> | 줄 끝 문자(개행) 설정 |
--mysql-delimiters | mysql 기본 구분자 사용 ( 줄:\n, 이스케이프:\, 선택적 포함:' ) |
--optionally-enclosed-by <char> | 필드 동봉 문자 설정 |
escape character지원 문자: \b, \n, \r, \t, \", \\' \\
예제 데이터셋
Some string, with a comma. Another "string with quotes"
스쿱명령어
$ sqoop import --fields-terminated-by , --escaped-by \\ --enclosed-by '\"' ...
결과 값
"Some string, with a comma.","1","2","3"... "Another \"string with quotes\"","4","5","6"...
댓글 없음:
댓글 쓰기