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 错误还是我做错了什么。
就我而言,这是在我的
beam.reshuffle()
和 beam.WindowInto
之间添加 WriteToFiles
后发生的。有人在这里提出了一种解决方案:使用 Apache Beam Python WriteToFiles
转换为每个窗口编写一个文件,但这对我来说不起作用。