본문 바로가기
학습장/Data Engineering

sqoop export

by daedoo_ 2021. 3. 12.

지난번에 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 

 

댓글