+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

pySpark无法执行保存操作,因为select锁定了表

发布于2021-04-16 06:51     阅读(826)     评论(0)     点赞(25)     收藏(1)


0

1

2

3

4

5

6

7

8

我们有一个非常频繁的选择表,而当我们尝试使用override选项保存dataFrame时,会出现如下错误:

py4j.protocol.Py4JJavaError: An error occurred while calling o364.save.
: com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2730)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2526)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1618)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1549)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.truncateTable(JdbcUtils.scala:113)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:56)
at org.apache.spark.sql.execution.datasources.SaveIntoDataSourceCommand.run(SaveIntoDataSourceCommand.scala:45)
at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:70)
at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult(commands.scala:68)

我确定这个问题与wating_timeout无关interative_timeout但不幸的是,有很多事情会导致此问题。问题是,当我们尝试截断表时,有一些锁定表的选择查询。

目前,可以通过从数据库中手动删除会话来修复它,但这不是我想要的解决方案。也许有人知道我可以做些什么来避免这种情况?


解决方案


经过调查,我发现问题本身非常愚蠢,因此有时我们使用TRUNCATE同时执行SELECT查询,然后两个查询都与wait metadata lock语句堆叠在一起默认情况下,针对这种情况的超时设置为50秒。

0

1

2

3

4

5



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/939360/85b9819ff3b80d56498b/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

25 0
收藏该文
已收藏

评论内容:(最多支持255个字符)