apache beam:如何用更新的数据覆盖源parquet文件



我有一个用python编写的梁管道,它读取两个拼花文件:stateupdates。管道保存当前的数据"状态"。在state文件中,读取updates文件,它将用updates的内容更新state文件(可能添加新行)。理想情况下,我的管道应该覆盖状态文件,以便下次管道运行时有新的更新,我可以将它们与最近的状态进行比较。这是我的问题。我的起始文件被称为state.parquet,在我的管道结束后,它不会覆盖该文件,但它会创建一个名为state-00000-of-00001.parquet的新文件。这让我意识到这样做可能不是一个好主意,因为当文件增长时,我可以将输出文件分片到多个单独的文件中,这将导致问题。

有什么更好的方法来完成我想做的事情?

您可以给您的文件一个执行id后缀,如state-run0001-00000-of-0000x.parquetupdate-run0002-00000-of-0000x.parquet。使用文件名(如state-run0001update-run0002)作为管道的输入。然后将输出写入state-run0002-00000-of-0000x.parquet

您只需要跟踪执行idrun000x来调度您的作业。

最新更新