文档首页/ MapReduce服务 MRS/ 故障排除/ 使用Sqoop/ Sqoop读取MySQL数据到HBase时报HBaseAdmin.<init>方法找不到异常
更新时间:2023-12-22 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抽取数据命令样例,命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。

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命令