2

Databricks 有一个很棒的 Synapse 连接器,可以承担批量上传的负担。在后台,连接器正在 Blob 存储中创建一个临时文件夹,并使用 Polybase 外部表非常快速地加载到 Synapse。

目前,我让 ETL 每天对 Synapse 进行批量加载(写入或覆盖单个日期分区)。

从 Databricks 加载到 Synapse 时,是否有任何选项可以确保一致性?

我的意思是分区切换或至少任何事务支持。我是否应该为 Databricks 工作落在中间的情况编写自定义数据库清理逻辑,所以我已经删除了以前的数据并只编写了数据集的一半?

UPD

官方文档说“使用数据源 API”。除了使更新分区不一致的风险之外,是否有任何原因不将数据加载到主表中?

对数据应用一些转换,然后使用数据源 API 将数据写回 Azure Synapse 中的另一个表。

df.write   
  .format("com.databricks.spark.sqldw")   
  .option("url", "jdbc:sqlserver://<the-rest-of-the-connection-string>")  
  .option("forwardSparkAzureStorageCredentials", "true")  
  .option("dbTable", "my_table_in_dw_copy")   
  .option("tempDir", "wasbs://...")
  .save()
4

0 回答 0