在PySpark环境中通过JDBC将数据写入ADW效果不佳

问题描述 投票:0回答:1

我尝试在 Jupyter Lab 环境中使用 JDBC 将 PySpark DataFrame 写入 ADW(Oracle 自治数据仓库),但性能较低。

dataframe.format("jdbc").mode('overwrite').option("batchsize", batchsize).option('createTableColumnTypes', create_str).option("rewriteBatchedStatements", "true").option("url", jdbc_url).option("dbtable", table).option("user", self.user).option("password", self.password).option("driver", "oracle.jdbc.OracleDriver").save()

我正在使用

rewriteBatchedStatements
batchsize
参数,但性能仍然很差。

使用DBeaver等其他工具,加载性能更好。您能否建议实现这种连接的指南或最佳实践?

ojdbc8 火花3.5.0 甲骨文 19c

apache-spark pyspark jdbc data-warehouse oracle-autonomous-db
1个回答
0
投票

Oracle ADW 在使用其批量加载功能时表现最佳。您可以通过设置特定的连接属性来启用它:

.option("oracle.jdbc.defaultBatchValue", "5000")

并尝试使用defaultRowPrefetch 100,它告诉Oracle驱动程序要获取多少行(默认为10)。

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.