지난번에 sqoop 주요 명령어 별 기본 파라미터에 대해 포스팅 하였습니다.
2021.02.21 - [학습장] - Sqoop ETL
금일은 sqoop export 관련 테스트시 확인하였던 내용들을 기록하고자 합니다.
- parquet 파일로 테스트시 -m 값과 관계없이 해당 경로에 쪼개져 있는 parquet 갯수만큼 맵퍼가 할당되었다.
- 타겟 DB에서는 insert into (col1, col2, .. ) values (val1, val2, ...), ( ), ( ) ... 구문으로 적재되는데, 이 구문으로 insert시 1개 row만 허용되는 DB도 있음.
ex) vertica
insert into (col1, col2, .. ) values
(aaa, aaa, ...)
,(bbb, bbb, ...)
,(ccc, ccc, ...)
==> ERROR: Syntax error at or near ","
- -D property 활용하여 조절가능 ( ex. -Dsqoop.export.records.per.statement=1 로 세팅 )
- -Dsqoop.export.records.per.statement : INSERT 문 하나에 사용할 row갯수
- -Dsqoop.export.statements.per.transaction : 각 트랜잭션 마다 사용할 INSERT 문 갯수
- 참고
- (디폴트 값은 어느 파일에서 볼 수 있는지 확인필요)
- -D property 사용할 경우, 파라미터 중 가장 앞에 나와야 한다고 함.
- 위 처럼 하면 적재 가능은 하지만 대량 적재시 매우 느리고 비효율적이어서, 타겟 DB 에서 적재 시 COPY 구문 등 활용할 수 있는지 추가확인 필요함.
- 20210312 추가
- --batch 파라미터 추가하여 bulk insert 가능 (ex. 버티카 - COPY LOCAL문으로 적재됨)
- JDBC 드라이버 통하여 batch mode 를 사용할 수 있게 하는 기능이라고 함
- 위 언급한 -D property 없어도 됨
- --direct 파라미터는 리소스를 많이 잡게되어 사용에 주의
- job 수행시 콘솔에 출력되는 로그 외에 application log 확인 필요시 (yarn 리소스매니저에서 확인되는 로그인듯)
- yarn logs -applicationId application_id
- ex) CLI 에서 보이지 않았던 타겟 DB에서 뱉은 syntaxerror 메세지가 위 로그에서는 보임
- 수행중인 job 확인
- yarn application -list
- 수행중인 job kill
- yarn application -kill application_id
'학습장 > Data Engineering' 카테고리의 다른 글
sqoop export 시 org.apache.parquet.io.ParquetDecodingException (0) | 2021.04.02 |
---|---|
까먹었을때 참고할 linux 명령어 정리 (0) | 2021.03.13 |
pyspark groupBy 샘플코드 (0) | 2021.03.01 |
Sqoop ETL (0) | 2021.02.21 |
DataStage Job Xml export (0) | 2021.01.17 |
댓글