开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

遇到过flink jdbc写入数据时,长时间没写入后,报这个错吗?

遇到过flink jdbc写入数据时,长时间没写入后,报java.io.IOException: Reestablish JDBC connection failed的错误吗?Caused by: java.io.IOException: Reestablish JDBC connection failed
at org.apache.flink.connector.jdbc.internal.JdbcOutputFormat.flush(JdbcOutputFormat.java:232)
... 8 more
Caused by: java.sql.SQLRecoverableException: Closed Connection
at oracle.jdbc.driver.PhysicalConnection.needLine(PhysicalConnection.java:4089)
at oracle.jdbc.driver.OracleStatement.closeOrCache(OracleStatement.java:1803)
at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:1786)
at oracle.jdbc.driver.OracleStatementWrapper.close(OracleStatementWrapper.java:147)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.close(OraclePreparedStatementWrapper.java:111)
at org.apache.flink.connector.jdbc.statement.FieldNamedPreparedStatementImpl.close(FieldNamedPreparedStatementImpl.java:175)
at org.apache.flink.connector.jdbc.internal.executor.TableSimpleStatementExecutor.closeStatements(TableSimpleStatementExecutor.java:70)
at org.apache.flink.connector.jdbc.internal.executor.TableBufferReducedStatementExecutor.closeStatements(TableBufferReducedStatementExecutor.java:108)
at org.apache.flink.connector.jdbc.internal.JdbcOutputFormat.updateExecutor(JdbcOutputFormat.java:402)
at org.apache.flink.connector.jdbc.internal.JdbcOutputFormat.flush(JdbcOutputFormat.java:226)
... 8 more

展开
收起
三分钟热度的鱼 2023-11-15 19:56:19 165 0
2 条回答
写回答
取消 提交回答
  • 这个错误是由于Flink在长时间没有写入数据后,试图重新建立与数据库的连接时出现了问题。这个问题可能是由于数据库连接池的问题,或者是由于网络连接问题导致的。以下是一些可能的解决方案:

    1. 检查数据库连接池配置:如果数据库连接池的配置过小,可能会导致连接被用完,从而无法建立新的连接。你可以尝试增加连接池的大小。

    2. 检查网络连接:如果网络连接不稳定,可能会导致连接无法建立。你可以尝试更换网络,或者优化网络配置。

    3. 检查数据库配置:如果数据库的配置有问题,可能会导致连接无法建立。你可以尝试检查数据库的配置,确保所有的配置都是正确的。

    4. 检查数据库的状态:如果数据库的状态不正常,可能会导致连接无法建立。你可以尝试重启数据库,或者检查数据库的状态。

    5. 检查Flink的配置:如果Flink的配置有问题,可能会导致连接无法建立。你可以尝试检查Flink的配置,确保所有的配置都是正确的。

    2023-11-30 09:48:51
    赞同 1 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这表示 JDBC 连接失败,可能是因为网络故障或数据库服务器出现问题。您可以尝试以下方法来解决这个问题:

    1. 检查网络连接:确保 Flink TaskManager 和数据库服务器之间的网络连接正常。
    2. 检查数据库配置:请检查 Flink 中的数据库配置信息,确保配置正确。
    3. 检查数据库的状态:确认数据库服务器处于正常运行状态,且 Flink 用户有权访问。
    4. 检查数据库连接池:如果使用了数据库连接池,请检查数据库连接池的配置和使用情况,确保 Flink TaskManager 能够及时释放连接。
    5. 如果问题持续存在,请考虑增加 Flink 中的超时时间,或者检查数据库服务器是否有连接限制。
    2023-11-17 14:30:49
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载