Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqoop从mysql导入hbase:java.lang.NoSuchMethodError:org.apache.hadoop.hbase.client.HBaseAdmin_Mysql_Hbase_Sqoop - Fatal编程技术网

sqoop从mysql导入hbase:java.lang.NoSuchMethodError:org.apache.hadoop.hbase.client.HBaseAdmin

sqoop从mysql导入hbase:java.lang.NoSuchMethodError:org.apache.hadoop.hbase.client.HBaseAdmin,mysql,hbase,sqoop,Mysql,Hbase,Sqoop,我的系统环境: 启动hadoop服务和hbase后, 我试图将一个表从mysql导入hbase: /usr/local/sqoop/bin/sqoop import --connect jdbc:mysql://localhost:3306/TESTDB --table mytable --username <username> --hbase-table hbmytable --column-family

我的系统环境:

启动hadoop服务和hbase后, 我试图将一个表从mysql导入hbase

/usr/local/sqoop/bin/sqoop  import 
      --connect jdbc:mysql://localhost:3306/TESTDB  
      --table mytable 
      --username <username> 
      --hbase-table hbmytable 
      --column-family  hbmytable_cf 
      --split-by ID 
      --hbase-create-table 
      --password ########
/usr/local/sqoop/bin/sqoop导入
--连接jdbc:mysql://localhost:3306/TESTDB  
--表mytable
--用户名
--hbase表hbmytable
--列族hbmytable\u cf
--按ID拆分
--hbase创建表
--密码########
但是,导入失败,并显示以下错误消息:

......
18/08/08 18:41:28 INFO mapreduce.ImportJobBase: Beginning import of mytable
18/08/08 18:41:28 INFO Configuration.deprecation: mapred.jar is deprecated. Instead, use mapreduce.job.jar
18/08/08 18:41:28 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.HBaseAdmin.<init>(Lorg/apache/hadoop/conf/Configuration;)V
    at org.apache.sqoop.mapreduce.HBaseImportJob.jobSetup(HBaseImportJob.java:163)
    at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:268)
    at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:692)
    at org.apache.sqoop.manager.MySQLManager.importTable(MySQLManager.java:127)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:520)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:628)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:252)
。。。。。。
18/08/08 18:41:28信息mapreduce.ImportJobBase:开始导入mytable
18/08/08 18:41:28信息配置。弃用:mapred.jar已弃用。而是使用mapreduce.job.jar
18/08/08 18:41:28信息配置。弃用:mapred.map.tasks已弃用。相反,请使用mapreduce.job.maps
线程“main”java.lang.NoSuchMethodError中出现异常:org.apache.hadoop.hbase.client.HBaseAdmin。(Lorg/apache/hadoop/conf/Configuration;)V
位于org.apache.sqoop.mapreduce.HBaseImportJob.jobSetup(HBaseImportJob.java:163)
位于org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:268)
位于org.apache.sqoop.manager.SqlManager.importable(SqlManager.java:692)
位于org.apache.sqoop.manager.MySQLManager.importable(MySQLManager.java:127)
位于org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:520)
位于org.apache.sqoop.tool.ImportTool.run(ImportTool.java:628)
位于org.apache.sqoop.sqoop.run(sqoop.java:147)
位于org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
位于org.apache.sqoop.sqoop.runSqoop(sqoop.java:183)
位于org.apache.sqoop.sqoop.runTool(sqoop.java:234)
位于org.apache.sqoop.sqoop.runTool(sqoop.java:243)
位于org.apache.sqoop.sqoop.main(sqoop.java:252)


有什么解决办法吗?

在将数据从MySQL导入Hbase时,我也遇到了这个异常

似乎是依赖冲突

我正在使用-

Hadoop - 3.2.0
Hbase - 2.2.0
Sqoop- 1.4.7
我已经在SQOOP_HOME/lib中手动添加了下面提到的jar-

1: hbase-client-1.2.0.jar
2: hbase-common-1.2.0.jar
3: hbase-mapreduce-2.2.0.jar
4: hbase-protocol-1.2.0.jar
5: hbase-server-1.2.0.jar
6: hbase-zookeeper-2.2.0.jar
7: protobuf-java-2.5.0.jar
Hbase导入工作正常


**我正在使用Hbase 2.2.0,但仍然必须使用所有Hbase-1.2.0 jar。

检查文件sqoop-env.sh中定义的Hbase_HOME是否存在。当然,此环境变量设置为:
export Hbase_HOME=/usr/local/Hbase
,在尝试使用sqoop之前,hbase已成功启动。我相信sqoop 1.4.7需要hbase 1.2库,而不是2.0库…我安装了hbase 1.2.5以测试这一点,但使用相同的sqoop导入语句,我现在得到错误消息:(..)线程“main”中出现异常java.lang.Class.forName(Class.java:264)处的java.lang.Class.forName(Class.java:264)处的java.lang.Class.forName0(本机方法)处的org/apache/hbase/thirdparty/com/google/protobuf/RpcController处的(..)org.apache.sqoop.hbase.HBaseUtil.isHBaseJarPresent(HBaseUtil.java:46)处的原因是:java.lang.ClassNotFoundException:(..)解决库兼容性问题可能非常乏味。为什么不安装Hortonworks或Cloudera沙箱?
1: hbase-client-1.2.0.jar
2: hbase-common-1.2.0.jar
3: hbase-mapreduce-2.2.0.jar
4: hbase-protocol-1.2.0.jar
5: hbase-server-1.2.0.jar
6: hbase-zookeeper-2.2.0.jar
7: protobuf-java-2.5.0.jar