簡體   English   中英

Apache Spark 和 JDBC:套接字異常:連接重置

[英]Apache Spark & JDBC : Socket Exception : Connection Reset

我們的 Spark Java 應用程序任務在運行時出現異常"com.microsoft.sqlserver.jdbc.SQLServerException: java.net.Socket Exception : Connection Reset"

它使用以下代碼與數據庫建立連接,並且表有數百萬條記錄:

session.read().format("jdbc")
                        .option("url", dbProperties.getProperty("URL"))
                        .option("driverClass", dbProperties.getProperty("DRIVERCLASS"))
                        .option("username", dbProperties.getProperty("USERNAME"))
                        .option("password", dbProperties.getProperty("PASSWORD"))
                        .option("dbtable", "(" + formattedSQL + ") as " + tablenameDS)
                        .load();

在 Apache Spark 中是否有一種方法可以在重試之間延遲對數據庫執行一些 X 連接重試?

是否將以下屬性“ spark.task.maxFailures ”默認值從 4 增加,以解決此問題?

兩種解決方案:

  1. option()添加特定於 JDBC 的屬性作為選項,例如connectRetryCount 您可以在以下位置查看列表: https : //docs.microsoft.com/en-us/sql/connect/jdbc/setting-the-connection-properties?view=sql-server-ver15

  2. 在 URL 本身中添加 JDBC 屬性。

您的代碼可能如下所示:

session.read().format("jdbc")
    .option("connectRetryCount", 200)
    .option("url", dbProperties.getProperty("URL"))
    .option("driverClass", dbProperties.getProperty("DRIVERCLASS"))
    .option("username", dbProperties.getProperty("USERNAME"))
    .option("password", dbProperties.getProperty("PASSWORD"))
    .option("dbtable", "(" + formattedSQL + ") as " + tablenameDS)
    .load();

你可以在那里找到詳細的例子: https : //github.com/jgperrin/net.jgp.books.spark.ch08/tree/master/src/main/java/net/jgp/books/spark/ch08/lab100_mysql_ingestion

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM