Oracle Connection使用Spark重试

时间:2019-07-19 10:39:09

标签: apache-spark connection

我正在尝试向Oracle推广。如果我的连接失败,则作业失败。相反,我想设置一些连接重试限制,以确保其尝试按照该限制重新连接,然后在未连接时使作业失败。

请建议我们如何实现此目标。

1 个答案:

答案 0 :(得分:1)

让我们假设您正在使用PySpark。最近,我在项目中使用了它,因此我知道它可以工作。

我使用了重试PyPi项目 retry 0.9.2

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

我使用Python类保存与重试相关的配置。

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 

每次重试,Backoff都会增加Backoff乘数的延迟,这是一个非常常见的功能要求。

干杯!