我正在尝试将一个表从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)
请帮助。
答案 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')