복붙노트

[HADOOP] 여러 레코드를 포함하는 삽입 문을 작성하는 Sqoop

HADOOP

여러 레코드를 포함하는 삽입 문을 작성하는 Sqoop

sqoop에서 netezza로 데이터를로드하려고합니다. 그리고 우리는 다음과 같은 문제에 직면하고 있습니다.

java.io.IOException: org.netezza.error.NzSQLException: ERROR:

입력 데이터 세트의 예는 다음과 같습니다.

1,2,3

1,3,4

sqoop 명령은 다음과 같습니다.

sqoop export --table <tablename> --export-dir <path> 
--input-fields-terminated-by '\t' --input-lines-terminated-by '\n' --connect
'jdbc:netezza://<host>/<db>' --driver org.netezza.Driver 
--username <username> --password <passwrd>

Sqoop은 다음과 같은 방식으로 insert 문을 작성합니다.

(c1, c2, c3) 값 (1,2,3), (1,3,4)에 삽입하십시오.

하나의 레코드를로드 할 수 있지만 데이터를 여러 레코드에로드하려고하면 오류는 위에서 설명한대로입니다.

도와 주셔서 감사합니다.

해결법

  1. ==============================

    1.sqoop.export.records.per.statement = 1을 설정하면 확실히 도움이되지만 내보내기 레코드 수가 "5 백만"이라고하면 내보내기 프로세스가 매우 느려집니다.

    sqoop.export.records.per.statement = 1을 설정하면 확실히 도움이되지만 내보내기 레코드 수가 "5 백만"이라고하면 내보내기 프로세스가 매우 느려집니다.

    이 문제를 해결하려면 다음을 추가해야합니다.

    1.) 속성 파일 sqoop.properties는이 속성 jdbc.transaction.isolation = TRANSACTION_READ_UNCOMMITTED를 포함해야합니다 (내보내기 중에 교착 상태를 피함)

    또한 export 명령에서 다음을 지정해야합니다.

    --connection-param-file /path/to/sqoop.properties

    또한 sqoop.export.records.per.statement = 100이므로 내보내기 속도가 빨라집니다.

    3.) 세 번째로 --batch를 추가해야합니다. 기본 명령문 실행에는 배치 모드를 사용하십시오.

    최종 수출은 다음과 같습니다.

    sqoop export -D sqoop.export.records.per.statement=100 --table <tablename> --export-dir <path> 
    --input-fields-terminated-by '\t' --input-lines-terminated-by '\n' --connect
    'jdbc:netezza://<host>/<db>' --driver org.netezza.Driver 
    --username <username> --password <passwrd>
    --connection-param-file /path/to/sqoop.properties
    --batch
    

    이것이 도움이되기를 바랍니다.

  2. ==============================

    2."sqoop.export.records.per.statement"속성을 사용하여 하나의 insert 문에 사용될 행 수를 사용자 지정할 수 있습니다. 예를 들어 Netezza의 경우 1로 설정해야합니다.

    "sqoop.export.records.per.statement"속성을 사용하여 하나의 insert 문에 사용될 행 수를 사용자 지정할 수 있습니다. 예를 들어 Netezza의 경우 1로 설정해야합니다.

    sqoop 내보내기 -Dsqoop.export.records.per.statement = 1 --connect ...

    Apache Sqoop Cookbook에서이 팁과 다른 많은 팁을 설명하는 것이 좋습니다.

  3. from https://stackoverflow.com/questions/17701396/sqoop-creating-insert-statements-containing-multiple-records by cc-by-sa and MIT license