我正在试图找出一种模式,从我的数据湖中的表中删除行。数据湖是Azure数据湖gen 2,我使用Synapse Notebook在PySpark中编写代码。我有一个服务总线,当一个对象有一个插入或更新时,它会得到消息,我正在两个步骤中处理:
1.一个服务监听服务总线,并将消息作为带有json结构的 parquet 文件放入我的青铜存储帐户。
1.当该文件出现在Bronze文件路径中时,它会触发Synapse中的存储帐户触发器,该触发器运行一个管道,该管道运行Synapse Notebook以处理对银层的插入/更新。银层是Azure数据湖中的自动分区parquet文件。
有时行会被删除,我确信我可以创建一个具有ObjectId和delete消息类型的消息。然后,我可以将该消息放在青铜文件路径中。我正在寻找的是,我将如何删除行,然后从分区 parquet 文件中的银层?
1条答案
按热度按时间yquaqz181#
没有简单的方法从
parquet
文件中删除行,所有的“解决方案”都带来了许多问题。这就是为什么像delta,hudi,iceberg这样的格式被创建的原因。它们支持DELETE
并确保操作的ACID属性。以下是Synapse + Delta的一个良好开端:link。