apache-spark - 将PySpark Dataframe批量写入SQL DB

标签 apache-spark pyspark apache-spark-sql pyspark-sql databricks

我在PySpark中有一个数据框(使用Databricks),我想将此数据框写入SQL DB(以我的情况为Azure SQL数据库)。除看起来这会触发对SQL DB的逐行插入(这对于10M +行而言当然不可行)外,此方法工作正常。
有什么方法可以强制PySpark改为使用批量插入?

目前,我只是使用以下命令:

df.write.jdbc(url=jdbcUrl, table=targetTable, mode="append", properties=connectionProperties)

在SQL端执行的代码如下所示:

(@P0 int,@P1 bit,@P2 bit,@P3 float,@P4 float,@P5 nvarchar(4000),@P6 int,@P7 int,@P8 int)INSERT INTO dbo.MyTable("Index","Sampling10pct","Sampling1pct","Latitude","Longitude","SessionID","Year","Month","Day") VALUES (@P0,@P1,@P2,@P3,@P4,@P5,@P6,@P7,@P8)

最佳答案

正如user8371915所说,Microsoft提供了一个SQL连接器,它提供了批量插入数据的功能:
github.com/Azure/azure-sqldb-spark

关于apache-spark - 将PySpark Dataframe批量写入SQL DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51951989/

相关文章:

apache-spark - spark-submit 的奇怪行为

scala - 从数据框 Spark 中删除一列

scala - 如何对RDD进行排序

apache-spark - Spark - 获取部分文件后缀

python - AWS Glue 和更新复制数据

scala - 如何计算DataFrame列的2的幂

scala - Spark 、斯卡拉 : How to Subtract the values in the RDD pairs based on their key?

apache-spark - spark "basePath"选项设置

apache-spark - Pyspark:在窗口内使用 udf

apache-spark - org.apache.spark.sql.Row 无法在 Spark 2.0 Preview 中解析