sqoop将memstore切换到mysql的错误

这篇博客主要讲述了在使用Sqoop过程中遇到的元数据相关错误,包括无法解析为数字、元数据版本不匹配以及MySQL导入HDFS时的通信错误。解决方法包括更新SQOOP_ROOT表、更改存储引擎为MyISAM以及导入缺失的jar包。
摘要由CSDN通过智能技术生成

1、

20/10/29 19:23:24 WARN hsqldb.HsqldbJobStorage: Could not interpret as a number: null
20/10/29 19:23:24 ERROR hsqldb.HsqldbJobStorage: Can not interpret metadata schema
20/10/29 19:23:24 ERROR hsqldb.HsqldbJobStorage: The metadata schema version is null
20/10/29 19:23:24 ERROR hsqldb.HsqldbJobStorage: The highest version supported is 0
20/10/29 19:23:24 ERROR hsqldb.HsqldbJobStorage: To use this version of Sqoop, you must downgrade your metadata schema.
20/10/29 19:23:24 ERROR tool.JobTool: I/O error performing job operation: java.io.IOException: Invalid metadata version.
        at org.apache.sqoop.metastore.hsqldb.HsqldbJobStorage.init(HsqldbJobStorage.java:202)
        at org.apache.sqoop.metastore.hsqldb.HsqldbJobStorage.open(HsqldbJobStorage.java:161)
        at org.apache.sqoop.tool.JobTool.run(JobTool.java:289)
        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)

解决方法:
sqoop要将memstore切换到mysql中时,要首先在mysql中维护一张SQOOP_ROOT表,而创建这张表有两种方法:
方式1:可以使用sqoop的某一个语句进行连接,这样就可以创建此表

执行如下语句即可
sqoop job --list --meta-connect ‘jdbc:mysql://qianfeng03:3306/sqoop?user=root&password=@Mm123123’

执行后,SQOOP_ROOT表创建成功,但是会报上面的错误,不影响,然后在SQOOP_ROOT表中添加这样一条数据就可以正常运行了

insert into SQOOP_ROOT values (NULL, 'sqoop.hsqldb.job.storage.version', '0');

方式2)手动维护此表
CREATE TABLE SQOOP_ROOT (
version int(11) DEFAULT NULL,
propname varchar(128) NOT NULL,
propval varchar(256) DEFAULT NULL,
UNIQUE KEY SQOOP_ROOT_unq (version,propname)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
手动维护也要添加上面的语句,要不然也会报错。

2、

如果报以下
ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.NullPointerException
java.lang.NullPointerException
at org.json.JSONObject.(JSONObject.java:144)
需要将java-json.jar包导入到sqoop的lib目录下

3、

mysql导入到hdfs上时报以下错误:

20/10/29 19:42:45 ERROR tool.ImportTool: Import failed: java.io.IOException: Error communicating with database
        at org.apache.sqoop.metastore.hsqldb.HsqldbJobStorage.createInternal(HsqldbJobStorage.java:426)
        at org.apache.sqoop.metastore.hsqldb.HsqldbJobStorage.update(HsqldbJobStorage.java:445)
        at org.apache.sqoop.tool.ImportTool.saveIncrementalState(ImportTool.java:171)
        at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:541)
        at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:628)
        at org.apache.sqoop.tool.JobTool.execJob(JobTool.java:243)
        at org.apache.sqoop.tool.JobTool.run(JobTool.java:298)
        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)
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1086)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2617)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2778)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2825)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2156)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2441)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2366)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2350)
        at org.apache.sqoop.metastore.hsqldb.HsqldbJobStorage.setV0Property(HsqldbJobStorage.java:707)
        at org.apache.sqoop.metastore.hsqldb.HsqldbJobStorage.createInternal(HsqldbJobStorage.java:391)
        ... 12 more


解决方法:
修改两张表的存储引擎为myisam(innoDB引擎会引起事务锁超时情况)
alter table SQOOP_ROOT engine=myisam;
alter table SQOOP_SESSIONS engine=myisam;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值