执行时:
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。 任何想法如何解决这一问题? 谢谢, 老爹
答案 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的整个文件夹。