Sqoop Hive退出状态1

问题描述 投票:6回答:4

当我执行:

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。任何想法如何解决这一问题?谢谢,老爹

hadoop hive sqoop
4个回答
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版本。


2
投票

我同意Jarek Jarcec Cecho的回答。

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


0
投票

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.