文档首页/ MapReduce服务 MRS/ 用户指南(巴黎区域)/ 故障排除/ 使用Sqoop/ Sqoop读取MySQL中数据到HBase报HBaseAdmin.<init>方法找不到异常
更新时间:2024-10-11 GMT+08:00

Sqoop读取MySQL中数据到HBase报HBaseAdmin.<init>方法找不到异常

问题

使用MRS的Sqoop客户端(1.4.7版本),从MySQL数据库中指定表抽取数据,存放到HBase(2.2.3版本)指定的表中,报出异常:

Trying to load data into HBASE through Sqoop getting below error.
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.HBaseAdmin.<init>(Lorg/apache/hadoop/conf/Configuration;)V

完整异常信息如图所示:

执行Sqoop抽取数据命令样例:

sqoop import \
--connect jdbc:mysql://mysql服务器地址:端口号/database1 \
--username admin \
--password xxx \
--table table1 \
--hbase-table table2 \
--column-family info \
--hbase-row-key id \
--hbase-create-table --m 1

处理步骤

Sqoop客户端安装完成之后,没有直接引入HBase相关的依赖jar包,需要通过手动导入指定低版本的HBase相关依赖jar包。解决方法步骤如下:

  1. 确认Sqoop客户端和HBase客户端是否在同一个路径下。

    • 是,执行2
    • 否,删除原有的Sqoop和HBase客户端文件,从FusionInsight Manager上下载完整的客户端安装在同一路径下。执行2

  1. root用户登录Sqoop客户端安装节点。
  2. 下载HBase 1.6.0版本的jar包上传到Sqoop客户端的“lib”目录下。
  3. 上传包之后,修改包的权限,可以设置为755,具体执行命令为:

    chmod 755 包名称

  4. 在客户端目录下执行以下命令刷新Sqoop客户端:

    source bigdata_env

    重新执行sqoop命令