2013-04-21 116 views
6

退出当我执行:Sqoop蜂巢与状态1

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

请分享整个使用参数--verbose生成的日志输出。 – 2013-04-22 02:52:11

+0

请在这里找到日志:[pastpin](http://www.pastebin.com/HRMZiygh) – Diddy 2013-04-23 16:25:22

+0

...更多信息:从mysql直接导出到hdfs的工作没有问题,它只是当我尝试导出到蜂巢我得到这个错误。所以我的感觉是,这与丢失mysql驱动或没有足够的MySQL表权限无关。 – Diddy 2013-04-23 16:39:15

回答

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使用不同的节点版本。由于Sqoop将HBase和Hive jar添加到类路径中,因此只有一个节点版本可以处于活动状态,因此“第二个”工具(通常是hive)无法正常工作。

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

+0

非常感谢您的帮助!是的,我在本地开发环境中设置了HBase和Hive。我的搜索显示hbase-0.94.6.1使用libthrift-0.8.0.jar,而hive-0.10.0使用libthrift-0.9.0.jar。按照您的建议,我将HBASE_HOME设置为不存在的路径,并且...非常好,现在一切正常!再次感谢您的大力帮助! – Diddy 2013-04-24 07:22:38

0

有可能是mysql表的权限问题,或者您在配置单元库中缺少mysql连接器jar。请分享基于日志的命令

+0

感谢您的回复。请在这里找到日志摘录:http://pastebin.com/HRMZiygh。我可以在没有问题的情况下导出到HDFS,而不是Hive,所以问题不在于缺少驱动程序或MySQL权限。 – Diddy 2013-04-22 17:46:44

0

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

但是,这里是我与蜂巢面临的问题是我试图导入的表现在失败了,现在表已经退出,但实际上并没有。我想Metastore数据库文件已经写好了!所以,如果我们不想删除metastoredb的整个文件夹,那么我需要更改表名并重做命令。

2

我同意Jarek Jarcec Cecho的回答。

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