如果列具有值数组

时间:2016-05-10 13:21:21

标签: hiveql netezza sqoop2 sqoop

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

sqoop export --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表列值低于

Row1: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:地图50%减少0% 16/05/09 15:46:55 INFO mapreduce.Job:任务ID:attempt_1460986388847_0849_m_000000_1,状态:未通过 错误: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:错误:外部表:错误输入行数已达到maxerrors limit

1 个答案:

答案 0 :(得分:-1)

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