繁体   English   中英

将数据写入 Azure 中的特定分区 Dedicated SQL pool

[英]Write data to specific partitions in Azure Dedicated SQL pool

目前,我们正在使用下面文章中的步骤从我们的一个 spark 数据源(delta lake 表)中完全加载数据,并将它们写入 SQL DW 上的表。

https://learn.microsoft.com/en-us/azure/databricks/data/data-sources/azure/synapse-analytics具体来说,写入是使用,

df.write \
  .format("com.databricks.spark.sqldw") \
  .option("url", "jdbc:sqlserver://<the-rest-of-the-connection-string>") \
  .option("forwardSparkAzureStorageCredentials", "true") \
  .option("dbTable", "<your-table-name>") \
  .option("tempDir", "wasbs://<your-container-name>@<your-storage-account-name>.blob.core.windows.net/<your-directory-name>") \
  .option("maxStrLength",4000).mode("overwrite").save()

现在,我们的源数据,由于它是一个三角洲湖,是根据 countryid 进行分区的。 我们将仅加载/刷新某些分区到 SQL DWH,而不是现在正在发生的完整删除表和加载(因为我们指定“覆盖”)。我尝试添加一个附加选项(partitionBy,countryid)到上面的脚本,但这似乎不起作用。

上面的文章也没有提到分区。

我该如何解决这个问题?

可能有更好的方法来做到这一点,但这就是我实现它的方式。 如果目标 Synapse 表已分区,那么我们可以利用 Synapse 连接器提供的“preActions”选项删除该分区中的现有数据。 然后我们 append 与该分区有关的新数据(从源中读取为 dataframe),而不是覆盖整个数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM