首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqoop无法将增量状态存储到亚稳态。

问sqoop无法将增量状态存储到亚稳态。
EN

Stack Overflow用户
提问于 2016-05-15 19:38:12
回答 3查看 1.4K关注 0票数 2

这是在保存增量导入状态时得到的。

代码语言:javascript
复制
16/05/15 21:43:05 INFO tool.ImportTool: Saving incremental import state to the metastore
16/05/15 21:43:56 ERROR tool.ImportTool: Encountered IOException running import job: 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:164)
at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:518)
at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)
at org.apache.sqoop.tool.JobTool.execJob(JobTool.java:228)
at org.apache.sqoop.tool.JobTool.run(JobTool.java:283)
at org.apache.sqoop.Sqoop.run(Sqoop.java:148)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:184)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:226)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:235)
at org.apache.sqoop.Sqoop.main(Sqoop.java:244)
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2333)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2318)
at org.apache.sqoop.metastore.hsqldb.HsqldbJobStorage.setV0Property(HsqldbJobStorage.java:707)
at org.apache.sqoop.metastore.hsqldb.HsqldbJobStorage.createInternal(HsqldbJobStorage.java:391)
... 12 more 

我已经将默认的亚稳态改为MySQL。其他的一切都很顺利。据我所知,一些消息来源说sqoop不支持它。在这种情况下,我还需要知道我需要在-元参数中指定的默认的HSQL url是什么?

在sqoop site.xml中,我看到它是:

代码语言:javascript
复制
jdbc:hsqldb:file:/tmp/sqoop-meta/meta.db;shutdown=true

但是我要指定什么是元连接呢?我相信这一点并没有具体说明。

我需要显式地指定元连接,因为我是通过oozie运行作业的,所以需要指定元连接。

我已经检查过又检查过了,但是端口16000没有运行。sqoop-亚瑟尔命令当然可以启动它,但在这种情况下,它不是作为服务运行的。

所以,我要问的是一种将sqoop亚稳态作为服务运行的方法,或者需要知道为什么在为mysql配置时,这种状态不能存储在亚稳状态中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-17 11:13:04

在某个地方将HSQLDB实例作为Linux服务启动并不困难。即使您坚持使用与Sqoop1一起打包的过时的V1.8。

=> 将Hsqldb (1.8)作为系统守护进程运行

然后,您必须定期备份数据--与JDBC连接,运行一个=>,备份包含重建DB快照所需的所有检查点的“脚本”文件。

可能要比尝试将一个MySQL JDBC连接黑客到期望HSQLDB的那个源代码容易得多。

啊,而且不需要额外的费用,您可以找到一些关于如何在默认的conf文件中使用这里属性的说明,而不是命令行参数。

票数 0
EN

Stack Overflow用户

发布于 2017-01-13 15:07:01

今天MySQL遇到了同样的问题,并找出了原因。

Sqoop通过在同一个进程中使用不同的jdbc连接来锁定自己。默认情况下,MariaDB (MySQL)使用INNODB引擎创建表,该引擎引入事务.我想没人用INNODB测试过Sqoop。

我所做的就是在亚稳态中重新创建SQOOP_SESSIONS表,并使用MyISAM引擎。

代码语言:javascript
复制
CREATE TABLE `SQOOP_SESSIONS_n` (
  `job_name` varchar(64) NOT NULL,
  `propname` varchar(128) NOT NULL,
  `propval` varchar(1024) DEFAULT NULL,
  `propclass` varchar(32) NOT NULL,
  UNIQUE KEY `SQOOP_SESSIONS_n_unq` (`job_name`,`propname`,`propclass`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

drop table SQOOP_SESSIONS;

rename table SQOOP_SESSIONS_n to SQOOP_SESSIONS;

当然,如果你有工作机会的话,你也不会想失去你创造的工作。只需在删除表之前复制它们:

代码语言:javascript
复制
insert into SQOOP_SESSIONS_n select * from SQOOP_SESSIONS;
票数 2
EN

Stack Overflow用户

发布于 2016-05-16 04:12:14

看起来您的错误在mySQL方面。原因: java.sql.SQLException:超过了锁等待超时;尝试重新启动事务

您能发送用于运行此命令的完整命令吗?

在MySQL中检查以下内容:-显示引擎innodb \G

您应该考虑通过设置InnoDB (默认为50秒)来增加innodb_lock_wait_timeout的锁等待超时值。

显示诸如‘innodb_lock_wait_timeout’这样的变量;

可以使用以下行在/etc/my.cnf中将其永久设置为更高的值

innodb_lock_wait_timeout=120并重新启动mysql。

如果此时无法重新启动mysql,请运行以下命令:

设置全局innodb_lock_wait_timeout = 120;您也可以在会话期间设置它

设置innodb_lock_wait_timeout = 120;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37242857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档