使用 spark 重试 Oracle 连接

Oracle Connection retry using spark

我正在尝试将 Spark 连接到 Oracle。如果我的连接失败,则作业失败。相反,我想设置一些连接重试限制,以确保它根据限制尝试重新连接,如果未连接则作业失败。

请建议我们如何实施。

假设您使用的是 PySpark。最近我在我的项目中使用了它,所以我知道它有效。

我用过重试 PyPi 项目 retry 0.9.2

其应用程序通过了广泛的测试过程

我用了一个Pythonclass来保存retry相关的配置。

class RetryConfig:
    retry_count = 1
    delay_interval = 1
    backoff_multiplier = 1

我从运行时配置中收集了应用程序参数并将它们设置如下:

RetryConfig.retry_count = <retry_count supplied from config>
RetryConfig.delay_interval = <delay_interval supplied from config>
RetryConfig.backoff_multiplier = <backoff_multiplier supplied from config>

然后在连接数据库的方法调用上应用

@retry((Exception), tries=RetryConfig.retry_count, delay=RetryConfig.delay_interval, backoff=RetryConfig.backoff_multiplier)
def connect(connection_string):
  print("trying")
  obj = pyodbc.connect(connection_string)
  return obj 

每次重试时退避都会通过退避乘数增加延迟 - 这是一个很常见的功能问题。

干杯!!