우리는 Netezza direct를 사용하여 POC의 일부로 Netezza에서 Hadoop으로 데이터를 가져옵니다.Sqoop Direct 가져 오기 Netezza 테이블 권한
Netezza 및 Netezza Sqoop 통합에 대한 몇 가지 질문이 있습니다.
Q1. Sqoop 직접 모드는 직접 전송을 수행하기 위해 항상 CREATE EXTERNAL TABLE 및 DROP 권한이 필요합니까?
2. 외부 테이블이 Netezza에서 생성됩니까? 그렇다면 어떤 데이터베이스입니까? 아래 쿼리를 사용하여 Sqoop을 볼 수 있습니다 :
CREATE EXTERNAL TABLE '/yarn/local/usercache/someuser/appcache/application_1483624176418_42787/work/task_1483624176418_42787_m_000000/nzexttable-0.txt'
USING (REMOTESOURCE 'JDBC'
BOOLSTYLE 'T_F'
CRINSTRING FALSE DELIMITER 44 ENCODING
'internal' FORMAT 'Text' INCLUDEZEROSECONDS TRUE
NULLVALUE 'null' MAXERRORS 1)
AS SELECT * FROM SOME_TBL WHERE (DATASLICEID % 3)
db URL에서 선택한 데이터베이스에서 생성합니까? jdbc : netezza : // somehostname : 5480/SOME_DB_1
Q3. Netezza가 외부 테이블을 생성해야하는 경우 Hadoop으로 가져와야하는 데이터가있는 실제 테이블과 다른 데이터베이스에 외부 테이블을 생성 할 수 있습니다. 수행해야 할 설정 변경은 무엇입니까?
4. Sqoop은 개별 매퍼가 만든 외부 테이블에서 DROP 테이블을 실행합니까? 사용
Sqoop을 명령 :
export HADOOP_CLASSPATH=/opt/nz/lib/nzjdbc3.jar
sqoop import -D mapreduce.job.queuename=some_queue
-D yarn.nodemanager.local-dirs=/tmp -D mapreduce.map.log.level=DEBUG
--direct --connect jdbc:netezza://somehost:5480/SOME_DB --table SOME_TBL_1
--username SOMEUSER --password xxxxxxx --target-dir /tmp/netezza/some_tbl_file
--num-mappers 2 --verbose