У нас очень часто выбирается таблица, и когда мы пытаемся сохранить dataFrame с опцией 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_timeout
и interative_timeout
. Но, к сожалению, есть много вещей, которые могут вызвать эту проблему. Проблема в том, что когда мы пытаемся усечь таблицу, есть запросы на выбор, которые блокируют таблицу.
На данный момент это можно исправить, вручную удалив сеансы из БД, но это не решение, которое я хочу . Может кто знает, что я могу сделать, чтобы избежать такой ситуации?