用于从 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 作业。作业一直运行到 map 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 作业的主要内容,如果未能解决你的问题,请参考以下文章