Sqoop Hive退出状态1

时间:2013-04-21 16:01:11

标签: hadoop hive sqoop

执行时:

sqoop import --connect jdbc:mysql://localhost/testdb --table test --hive-table test --hive-import -m 1 

我收到以下错误消息:

13/04/21 16:42:50 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 1
    at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:364)
    at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:314)
    at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:226)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:415)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:476)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:238)

我试图谷歌,但没有找到解决方案。我以伪分布式方式在本地设置Hadoop。 Hive运行良好......我使用嵌入式Metastore。 任何想法如何解决这一问题? 谢谢, 老爹

4 个答案:

答案 0 :(得分:9)

根据日志,您似乎遇到了以下异常:

13/04/22 18:34:44 INFO hive.HiveImport:线程“main”中的异常java.lang.NoSuchMethodError:org.apache.thrift.EncodingUtils.setBit(BIZ)B

在用户在“不兼容”版本中使用HBase和Hive之前,我已经看到过这个问题。不兼容性通常可以在多个级别上进行,但是这个特殊的是HBase和Hive使用不同的thrift版本。由于Sqoop将HBase和Hive jar添加到类路径中,因此只有一个thrift版本可以处于活动状态,因此“第二个”工具(通常是hive)无法正常工作。

你有没有机会在你执行Sqoop的盒子上安装HBase和Hive?如果是这样,你能检查每个项目正在使用的节俭版本吗?只需搜索“* thrift * .jar”。如果对这两个问题的回答是肯定的,那么你可能会将HBASE_HOME设置为不存在的东西,以强制Sqoop不加载HBase版本的thrift。

答案 1 :(得分:2)

我同意Jarek Jarcec Cecho的回答。

另一种解决方法是将libthrift*.jar文件从$HIVE_HOME/lib复制到$SQOOP_HOME/lib

答案 2 :(得分:0)

mysql表可能存在权限问题,或者您在hive lib中缺少mysql连接器jar。请分享命令的整个输出

答案 3 :(得分:0)

我遇到了同样的错误,这肯定与hbase和hive中的libthrift-0.8.0.jar和libthrift-0.9.0.jar有关。所以我只是将我的HBASE_HOME指向未知位置并执行我的bash。然后就可以了。

但是我遇到的问题是Hive是我试图导入的表,现在失败了表示该表已经退出但实际上并没有。我想Metastore db文件已经写好了!所以我不得不更改表的名称并重做命令,以防我们不想删除metastoredb的整个文件夹。