Hive 将间隔数据类型映射到netezza中的字符串时出错
我正在尝试将一个表从Netezza导入到Hive,其中一个列类型为Netezza中的INTERVAL DAY 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
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。为什么不是所有数据类型都需要它?