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

Hive 将间隔数据类型映射到netezza中的字符串时出错,hive,sqoop,netezza,Hive,Sqoop,Netezza,我正在尝试将一个表从Netezza导入到Hive,其中一个列类型为Netezza中的INTERVAL DAY Netezza中的表结构: CREATE TABLE DEMO (id INT PRIMARY KEY, bday INTERVAL DAY); 我使用sqoop在配置单元中导入表及其数据,因为配置单元不支持间隔数据类型,所以在导入时,我将间隔数据类型映射到字符串 以下是我用于导入的命令: $SQOOP_HOME/bin/sqoop import --connec

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

Netezza中的表结构:

       CREATE TABLE DEMO (id INT PRIMARY KEY, bday INTERVAL DAY);
我使用sqoop在配置单元中导入表及其数据,因为配置单元不支持间隔数据类型,所以在导入时,我将间隔数据类型映射到字符串

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

    $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类型 2004年2月15日20:44:38错误sqoop.sqoop:运行sqoop时出现异常:java.lang.NullPointerException java.lang.NullPointerException 位于org.apache.sqoop.orm.ClassWriter.parseNullVal(ClassWriter.java:1322) 位于org.apache.sqoop.orm.ClassWriter.parseColumn(ClassWriter.java:1347) 位于org.apache.sqoop.orm.ClassWriter.\u 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)


请帮助。

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

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

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

简单的逻辑当我们将任何数据导入到配置单元时,首先sqoop将导入到hdfs中,然后它将数据移动到配置单元表中。所以我们必须同时映射HDF和hive。但并非所有数据类型


--映射列java BDAY=String——映射列配置单元BDAY=String。

为什么不是所有数据类型都需要它?