【问题标题】:jdbc write to greenplum/postgres issuejdbc 写入 greenplum/postgres 问题
【发布时间】:2021-05-23 04:50:43
【问题描述】:

Spark jdbc 写入会给具有更多列(400 列和 200 行)的数据带来噩梦,即使列更少而行更多,它也需要很长时间(20 万条记录需要 30 到 60 分钟)。我们没有用于分区的主键,因此将使用很少的相关键(从 jdbc/transformations 读取没有问题,只有写入有问题)。

  • Spark Cluster conf -- 1 个 master,2 个 worker >> 8 个核心,每个 32 Gb。
  • Spark sumit 命令参数 -- 'executor_cores': 2,'executor_memory': '2G','num_executors': 2,'driver_memory': '2G'

根据其他 stackoverflow 建议尝试以下方式。

df.write.format('jdbc').options(url=url,driver=driver,dbtable=table,user=user,password=password,batchsize=20000,rewriteBatchedStatements=true).mode(mode).save()
df.repartition(15).write.format('jdbc').options(url=url,driver=driver,dbtable=table,user=user,password=password,batchsize=20000,rewriteBatchedStatements=true).mode(mode).save()

写入 mysql 工作正常。写入 greenplum 和 postgres 是个问题(两者均已验证)。 我找不到太多选择。

【问题讨论】:

    标签: jdbc pyspark greenplum


    【解决方案1】:

    经过反复试验,发现了一些有助于提高性能的参数。

    1. 对于 Postgres,应使用 reWriteBatchedInserts=true 而不是 rewriteBatchedStatements=true(这仅适用于 mysql)。这对性能有很大帮助。
    2. 减少批量有助于写入数据库。通过反复试验,我们可以确定适合环境的价值。

    【讨论】:

      猜你喜欢
      • 2022-10-07
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      • 2021-10-27
      • 2019-04-22
      • 1970-01-01
      相关资源
      最近更新 更多