Hadoop Sqoop直接导入Netezza表权限

Hadoop Sqoop直接导入Netezza表权限,hadoop,netezza,sqoop,Hadoop,Netezza,Sqoop,我们使用netezza direct将数据从netezza导入Hadoop,作为POC的一部分 有几个关于Netezza特定和Netezza Sqoop集成的问题 问题1。Sqoop直接模式是否始终需要创建外部表和删除权限才能执行直接传输 问题2。是否在Netezza中创建外部表?如果是,哪个数据库?我看到Sqoop使用以下查询: CREATE EXTERNAL TABLE '/yarn/local/usercache/someuser/appcache/application_14836241

我们使用netezza direct将数据从netezza导入Hadoop,作为POC的一部分

有几个关于Netezza特定和Netezza Sqoop集成的问题

问题1。Sqoop直接模式是否始终需要创建外部表和删除权限才能执行直接传输

问题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)
它是否在数据库URL中选择的数据库中创建?jdbc:netezza://somehostname:5480/SOME_DB_1

第三季度。如果Netezza需要创建外部表,那么它是否可以在不同的数据库中创建外部表,而不是在需要将包含数据的实际表拉入Hadoop的数据库中创建外部表。需要进行的配置更改是什么

第四季度。Sqoop是否在由单个映射程序创建的外部表上运行DROP table

使用的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   

这是我在Sqoop用户社区得到的回复(感谢Szabolcs Vasas)

在Netezza direct imports的情况下,Sqoop执行一个CREATE EXTERNAL TABLE命令(因此您需要CREATE EXTERNAL TABLE权限)来创建表内容到临时文件的备份,并将该文件的内容复制到HDFS上的最终输出。 您在电子邮件中粘贴的SQL命令确实是由Sqoop执行的命令,但据我从Netezza文档(,第6个示例)中了解,这并没有在任何模式中创建新的外部表,它只是备份表的内容,因此不执行DROP table语句

问题1。是的,Sqoop需要创建外部表,但不需要删除权限

问题2。Sqoop并不真正在任何模式中创建新的外部表,它只是备份表的内容(第6个示例)

第三季度。无法在特定架构中创建外部表

第四季度。不,Sqoop不运行DROP命令


此外,由sqoop直接进程创建的表是。因此,一旦映射程序接收到名为namedfio的数据,就会删除外部remotesource JDBC表。因此,在传输之后,表不会存储在Netezza中。

这是我在Sqoop用户社区中得到的回复(感谢Szabolcs Vasas)

在Netezza direct imports的情况下,Sqoop执行一个CREATE EXTERNAL TABLE命令(因此您需要CREATE EXTERNAL TABLE权限)来创建表内容到临时文件的备份,并将该文件的内容复制到HDFS上的最终输出。 您在电子邮件中粘贴的SQL命令确实是由Sqoop执行的命令,但据我从Netezza文档(,第6个示例)中了解,这并没有在任何模式中创建新的外部表,它只是备份表的内容,因此不执行DROP table语句

问题1。是的,Sqoop需要创建外部表,但不需要删除权限

问题2。Sqoop并不真正在任何模式中创建新的外部表,它只是备份表的内容(第6个示例)

第三季度。无法在特定架构中创建外部表

第四季度。不,Sqoop不运行DROP命令

此外,由sqoop直接进程创建的表是。因此,一旦映射程序接收到名为namedfio的数据,就会删除外部remotesource JDBC表。因此,表在传输后不会存储在Netezza中