将间隔数据类型映射到netezza中的字符串时出错

时间:2015-02-04 15:21:53

标签: hive sqoop netezza

我正在尝试将一个表从Netezza导入到Hive,其中一个列类型为Netezza的INTERVAL DAY。

Netezza中的表格结构:

       CREATE TABLE DEMO (id INT PRIMARY KEY, bday INTERVAL DAY);

我正在使用sqoop将表及其数据导入hive中,因为hive不支持INTERVAL数据类型,因此在导入时我将INTERVAL数据类型映射到STRING。

以下是我用来导入的命令:

    $SQOOP_HOME/bin/sqoop import --connect jdbc:netezza://192.168.145.24:5480/health_care --table DEMO  --username admin --password password --hive-import --map-column-hive ID=INT,BDAY=STRING --m 4

在运行上述命令时,我面临以下错误:

  

15/02/04 20:44:38错误orm.ClassWriter:无法解析SQL类型101       15/02/04 20:44:38错误orm.ClassWriter:无法解析SQL类型101       15/02/04 20:44:38错误orm.ClassWriter:无法解析SQL类型101       15/02/04 20:44:38错误orm.ClassWriter:对于BDAY列,SQL类型101没有Java类型       15/02/04 20:44:38错误orm.ClassWriter:对于BDAY列,SQL类型101没有Java类型       15/02/04 20:44:38错误orm.ClassWriter:对于BDAY列,SQL类型101没有Java类型       15/02/04 20:44:38错误orm.ClassWriter:对于BDAY列,SQL类型101没有Java类型       15/02/04 20:44:38错误orm.ClassWriter:对于BDAY列,SQL类型101没有Java类型       15/02/04 20:44:38错误orm.ClassWriter:对于BDAY列,SQL类型101没有Java类型       15/02/04 20:44:38错误orm.ClassWriter:对于BDAY列,SQL类型101没有Java类型       15/02/04 20:44:38错误orm.ClassWriter:对于BDAY列,SQL类型101没有Java类型       15/02/04 20:44:38错误orm.ClassWriter:对于BDAY列,SQL类型101没有Java类型       15/02/04 20:44:38错误orm.ClassWriter:对于BDAY列,SQL类型101没有Java类型       15/02/04 20:44:38错误orm.ClassWriter:对于BDAY列,SQL类型101没有Java类型       15/02/04 20:44:38错误sqoop.Sqoop:运行Sqoop异常:java.lang.NullPointerException       显示java.lang.NullPointerException         at org.apache.sqoop.orm.ClassWriter.parseNullVal(ClassWriter.java:1322)         在org.apache.sqoop.orm.ClassWriter.parseColumn(ClassWriter.java:1347)         在org.apache.sqoop.orm.ClassWriter._generateParser(ClassWriter.java:1466)         在org.apache.sqoop.orm.ClassWriter.generateParser(ClassWriter.java:1434)         在org.apache.sqoop.orm.ClassWriter.generateClassForColumns(ClassWriter.java:1860)         在org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1672)         在org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:96)         在org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478)         在org.apache.sqoop.tool.ImportTool.run(ImportTool.java:601)         在org.apache.sqoop.Sqoop.run(Sqoop.java:143)         在org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)         在org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)         在org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)         在org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)         在org.apache.sqoop.Sqoop.main(Sqoop.java:236)

请帮助。

2 个答案:

答案 0 :(得分:1)

我有同样的问题,我解决了我的问题。

当我们将任何数据导入hive时,简单的逻辑首先将sqoop导入到hdfs,然后将数据移动到hive表中。所以我们也必须映射hdfs和hive。但不适用于所有数据类型,

- map-column-java BDAY = String --map-column-hive BDAY = string。

答案 1 :(得分:0)

这看起来像是sqoop中的错误,而不是Netezza中的错误。在Netezza中,您需要使用to_char(interval, text)将间隔转换为字符串。例如

to_char(interval '15h 2m 12s', 'HH24:MI:SS')