使用Spark连接器通过Azure Databricks向Azure Cosmos DB升级

时间:2019-06-27 20:51:37

标签: python pyspark azure-cosmosdb upsert azure-databricks

我在Azure上有一个cosmosDB帐户。我使用Spark连接器“ azure-cosmosdb-spark_2.4.0_2.11-1.3.4-uber.jar”通过Databricks通过主键“ unique_ID”插入了10行。

cosmosDB容器设置了unique_ID作为唯一键。我遇到了多个问题。

要重新插入具有相同unique_ID但字段值不同的下一组记录,我无法成功完成。我正在使用的查询:

connectionConfig = {
"Endpoint" : "https://.documents.azure.com:443/",
"Masterkey" : "",
"Database" : "",
"preferredRegions" : "East US",
"Collection": "",
"Upsert" : "true"
}

data.write.format("com.microsoft.azure.cosmosdb.spark").options(**connectionConfig).save()

这失败了!

  

错误:写入一个非空表。

因此,我使用下一个查询:

data.write.format("com.microsoft.azure.cosmosdb.spark").mode("append").options(**connectionConfig).save()

这也失败了!

  

错误:违反唯一索引约束。

将模式“追加”替换为“覆盖”会给出完全相同的错误消息。

我该如何更新记录?

我不理解的是,至少不应该覆盖工作并且用新记录覆盖整个数据库吗?

0 个答案:

没有答案