我正在Apache中学习Windowing&Triggering概念,目的是:
问题:没有输出写入本地磁盘(管道确实创建了一个 beam-team-文件夹并在其中写入了一些文件,但原本没有 output.csv 目的地每5秒写入一次。)
下面是代码(非常感谢您的任何建议):
p = beam.Pipeline(runner=None, options=options, argv=None)
"""
#1) Read incoming messages & apply Windowing
"""
lines = p | "read_sub" >> beam.io.gcp.pubsub.ReadFromPubSub(topic=None, subscription=SUBSCRIBER, with_attributes=True) \
"""
#2) Apply 5 sec Windowing
"""
| 'window' >> beam.WindowInto(beam.window.FixedWindows(5))
"""
#3) apply Map() ops
"""
output = lines | "pardo" >> beam.Map(lambda x: x.data)
"""
#4) write out to localhost disk
"""
output | beam.io.WriteToText('output', file_name_suffix='.csv', header='time, colname1, colname2')
p.run().wait_until_finish()
非常感谢您的任何建议!
干杯!
答案 0 :(得分:0)
您正在从无限制的源中读取并试图写入有限制的源中。虽然Beam API for Java使用withWindowedWrites方法支持它,但是Python尚不支持它,这是人们期待已久的有用功能。因此,您需要切换到Java或将其写入BigQuery。