【问题标题】:pySpark can't perform save operation because select is locking the tablepySpark 无法执行保存操作,因为 select 正在锁定表
【发布时间】:2020-08-06 13:00:46
【问题描述】:

我们经常选择表格,当我们尝试使用 override 选项保存数据帧时,我们收到如下错误:

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_timeoutinterative_timeout 无关。但不幸的是,有很多事情会导致这个问题。问题是当我们试图截断表时,有一些选择查询正在锁定表。

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

【问题讨论】:

    标签: python pyspark apache-spark-sql amazon-rds aws-glue


    【解决方案1】:

    经过调查,我发现问题本身非常愚蠢,所以有时我们同时使用 TRUNCATE 进行 SELECT 查询,然后两个查询都与 wait metadata lock 语句叠加。这种情况的超时时间默认设置为 50 秒。

    【讨论】:

      猜你喜欢
      • 2013-09-17
      • 2023-03-16
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2020-11-17
      • 2019-01-01
      相关资源
      最近更新 更多