我尝试在 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
Oracle ADW 在使用其批量加载功能时表现最佳。您可以通过设置特定的连接属性来启用它:
.option("oracle.jdbc.defaultBatchValue", "5000")
并尝试使用defaultRowPrefetch 100,它告诉Oracle驱动程序要获取多少行(默认为10)。
希望有帮助。