Azure Synapse Pyspark 作业可以看到从 CosmosDB 中删除的记录

问题描述 投票:0回答:1

我们有访问 CosmosDB 表(链接服务)的 Pyspark 脚本。我们从 CosmosDB 表中删除了所有记录(通过减少 TTL)。但我仍然看到从 Pyspark 作业中删除的记录,但我没有从 Azure 门户的数据资源管理器中看到这些记录。

我希望当我从 Azure Synapse 工作区中的 Pyspark 查询时不会显示已删除的记录..

pyspark azure-cosmosdb azure-synapse azure-synapse-analytics
1个回答
0
投票

此行为完全符合预期,是一项功能而不是错误

如果您希望记录被视为从分析存储中逻辑删除,您需要在事务存储中实际删除它们(不依赖于事务存储 ttl)。

(即使如此,它们也没有真正删除,可以使用

spark.cosmos.keepAllRecordVersions
标志和/或时间旅行功能读取,但默认情况下它们不会显示在您的查询结果中)

为了同步事务性存储和分析存储中的 ttl 删除,需要将 ttl 和 attl 设置为相同的值(并保持静态)。减少 ttl 来删除文档,然后再次将其备份,无法在分析存储中进行镜像,因为基础文档不会在那里删除,并且会在 attl 增加时再次重新出现。

现在你处于这个位置,但是解决起来会很棘手。无法从事务存储中删除文档并将其传播到分析存储,因为文档已经从事务存储中消失。

您可能只需要在分析存储查询中的

>
上包含
_ts
过滤器,以仅包含您希望被视为“重新开始”点之后的文档。

© www.soinside.com 2019 - 2024. All rights reserved.