Apache Beam python fileio.WriteToFiles 过度分片

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

我在流式Python管道中使用

fileio.WriteToFiles
。我明确指定了预期的分片数量,如下

fileio.WriteToFiles(
      path=...,
      file_naming=fileio.default_file_naming(prefix="output", suffix=".txt"),
      shards=5)

但是,管道似乎完全忽略了分片计数。请注意,流式传输管道应用 30 分钟的固定窗口。在每个窗口内,输出文件被过度分片,如下

output-2020-12-14T23:30:00-2020-12-15T00:00:00--00000-00420
output-2020-12-14T23:30:00-2020-12-15T00:00:00--00001-00420
...
output-2020-12-14T23:30:00-2020-12-15T00:00:00--00419-00420
output-2020-12-15T00:00:00-2020-12-15T00:30:00--00000-00915
output-2020-12-15T00:00:00-2020-12-15T00:30:00--00001-00915
...
output-2020-12-15T00:00:00-2020-12-15T00:30:00--00914-00915

经过检查,我发现每个文件只包含一条记录。

我使用了不同的触发器和

max_writers_per_bundle
,这无助于改变这种行为。

我想知道这是 SDK 错误还是我做错了什么。

python apache-beam-io apache-beam
1个回答
0
投票

就我而言,这是在我的

beam.reshuffle()
beam.WindowInto
之间添加
WriteToFiles
后发生的。有人在这里提出了一种解决方案:使用 Apache Beam Python
WriteToFiles
转换为每个窗口编写一个文件
,但这对我来说不起作用。

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