gpt4 book ai didi

mysql - SparkSQL 连接问题

转载 作者:行者123 更新时间:2023-11-29 07:30:32 25 4
gpt4 key购买 nike

我有一个 Spark 作业,它正在将数据从 CSV 文件加载到 MySQL 数据库中。

一切正常,但最近我注意到 Spark 在插入阶段打开了许多连接(300 多个连接)。感觉就像每个插入语句都打开一个新连接,保持打开状态,并在某个时间点进行提交和关闭连接。有没有一种方法可以在每次插入后或在 10K 批处理后进行提交并进行一次提交?

这将不会为每个插入打开一个连接。如果它需要处理 1000 条记录,这很好,但是当您处理数十亿条记录时,它会占用大量资源。

最佳答案

如果对dataframe有任何操作导致shuffl的dataframe,默认spark,创建200个分区。导致 200 个数据库连接。

spark.sql.shuffle.partitions -- 配置在为连接或聚合改组数据时使用的分区数。 -- 默认值:200

使用以下方法检查数据帧的分区数:

df.rdd.getNumPartitions

使用您经常使用的列重新分区数据框:
df.repartition(NUMBER_OF_PARTIIOTONS, col("Frequent_used_column"))

您还可以设置“batchsize”参数来控制每次往返插入的行数。这有助于提高 JDBC 驱动程序的性能。默认为 1000。

jdbcDF.write
.format("jdbc")
.option("url", "jdbc:postgresql:dbserver")
.option("dbtable", "schema.tablename")
.option("user", "username")
.option("password", "password")
.option("batchsize", 5000)
.save()

关于mysql - SparkSQL 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51488730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com