用于从 Netezza 到 HDFS 的数据传输的 Sqoop 作业

Posted

技术标签:

【中文标题】用于从 Netezza 到 HDFS 的数据传输的 Sqoop 作业【英文标题】:Sqoop job for data transfer from Netezza to HDFS 【发布时间】:2015-11-04 11:34:01 【问题描述】:

我编写了一个 sqoop 作业,将数据从 Netezza 中的表导入到 HDFS。该作业已成功创建,并且在执行时也会启动 Map Reduce 作业。作业一直运行到 ma​​p 100% reduce 0% 并卡住。作业永远不会完成,并且根本不会传输数据。没有观察到错误或异常。

对于同一数据库的其他表,我几乎没有类似的工作。那些正确执行并传输数据。这种行为的可能原因是什么。

以下是选项文件中给出的 sqoop 作业的配置。

--直接 - 连接 jdbc:netezza://url/database_name - 用户名 A B C D - 密码 xyz - 桌子 表名 --拆分 primary_key_column --目标目录 hdfs_path -m 8

【问题讨论】:

你能发布你的 sqoop 导入命令吗? 【参考方案1】:

我删除了 --direct 选项,作业按预期工作。如果在 Netezza 的情况下数据包含“,”字符,则直接选项不起作用。下面是使用--direct遇到的异常错误:

无法执行外部表导出 org.netezza.error.NzSQLException: ERROR: found delim ',' in a data field, 在外部表定义中指定 escapeChar '\' 选项

【讨论】:

我也遇到了同样的问题。我认为这几乎使--direct 选项无用......我永远不会知道我的数据是否有分隔符......它只会挂起我所依赖的工作。 我也遇到了同样的问题,添加 --input-escaped-by '\' \ --escaped-by '\' 效果很好

以上是关于用于从 Netezza 到 HDFS 的数据传输的 Sqoop 作业的主要内容,如果未能解决你的问题,请参考以下文章

使用 unixODBC/isql 将数据加载到 HDFS

从 Python 到 SQL(Aginity、Netezza)的 CREATE/DROP 调用不起作用

用于从连续记录中收集值的 Netezza SQL

Netezza 与 C++ 的连接

将大量数据从 Netezza 复制到 Teradata

有没有办法将数据从一个 Netezza 设备中的数据库传输到另一个 Netezza 设备中的数据库?