1

我试图运行 sqoop 导出以将 Hive 表行加载到 Netezza 表中。问题是我有几列包含值数组,我在 Netezza 中为这些列数据类型创建 DDL 作为 varchar(200) 并运行 sqoop 作业但由于坏行达到限制,我收到错误消息。以下是我的 Sqoop 工作:

sqoop 导出 --options-file --direct --connect jdbc:netezza://10.90.21.140:5480/analytics --username sat144 --P --table analytics_stage --export-dir /home/dir1/analytics/data --fields-terminated-by '~' --input-null-string '\N' --input-null-non-string '\N' -m 1 -max-errors #0

下面是我的 Netezza DDL:
CREATE TABLE analytics_stage(id varchar(30)、name varchar(60)、dept nvarchar(99)、dept_id nvarchar(200));

我的 Hive 表列值如下

第 1 行:20134(id) sat(name) Data_Group(dept) [121,103,201,212,310] (dept_id)

谁可以帮我这个事?如果列在 Hive 表中有负值和值数组,那么 Netezza 中建议的数据类型是什么?

Sqoop 错误日志如下

16/05/09 15:46:49 INFO mapreduce.Job:map 50% reduce 0% 16/05/09 15:46:55 INFO mapreduce.Job:任务 ID:attempt_1460986388847_0849_m_000000_1,状态:FAILED 错误:java.io。 IOException:org.netezza.error.NzSQLException:错误:外部表:错误输入行数达到 maxerrors 限制

    at org.apache.sqoop.mapreduce.db.netezza.NetezzaExternalTableExportMapper.run(NetezzaExternalTableExportMapper.java:255)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)

原因:org.netezza.error.NzSQLException:错误:外部表:错误输入行数达到最大错误限制

4

1 回答 1

-1

导入/导出功能可从 RDBMS 到 HDFS,反之亦然。但是在使用 Hive、HBase、Hcatalog 时,我们只有一种导入选项。到目前为止,我们无法从 Hive、Hbase 和 HCatalog 导出数据。

于 2016-05-20T19:34:31.123 回答