【发布时间】:2017-01-27 21:43:34
【问题描述】:
作为 POC 的一部分,我们使用 netezza direct 将数据从 Netezza 导入 Hadoop。
有几个关于 Netezza 特定和 Netezza Sqoop 集成的问题。
第一季度。 Sqoop 直接模式是否总是需要 CREATE EXTERNAL TABLE 和 DROP 权限才能执行直接传输?
第二季度。是否在 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
第三季度。如果 Netezza 需要创建外部表,它是否可以在不同的数据库中创建外部表,而不是在实际表中创建需要将数据拉入 Hadoop 的表。需要进行哪些配置更改?
第四季度。 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
【问题讨论】: