[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.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."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에서이 팁과 다른 많은 팁을 설명하는 것이 좋습니다.
from https://stackoverflow.com/questions/17701396/sqoop-creating-insert-statements-containing-multiple-records by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] HDFS를 사용하지 않는 경우 데이터 지역 (0) | 2019.09.09 |
---|---|
[HADOOP] yarn hadoop 2.4.0 : 정보 메시지 : ipc.Client Retrying connect to server (0) | 2019.09.09 |
[HADOOP] 컨테이너 내부에서 YARN ContainerId를 어떻게 얻습니까? (0) | 2019.09.08 |
[HADOOP] Java 내부의 Hbase CopyTable (0) | 2019.09.08 |
[HADOOP] 확률과 예측이 모든 것을 동일하게 만드는 Spark MLLib 관련 문제 (0) | 2019.09.08 |