Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将PCollection分配回全局窗口_Python_Apache Flink_Google Cloud Dataflow_Apache Beam - Fatal编程技术网

Python 将PCollection分配回全局窗口

Python 将PCollection分配回全局窗口,python,apache-flink,google-cloud-dataflow,apache-beam,Python,Apache Flink,Google Cloud Dataflow,Apache Beam,我有一个管道,它接受一个有界的PCollection,为它分配时间戳,并将它“窗口”到滑动窗口中。在分组转换之后,我想将生成的PCollection分配回全局窗口。我一直不知道该怎么做。参见下面的梁伪代码示例: 将apache_梁导入为梁 将beam.Pipeline()作为p: ( P |beam.io.ReadFromText() |beam.ParDo(AddTimestampDoFn()) |beam.WindowInto(beam.window.SlidingWindows(60,60

我有一个管道,它接受一个有界的PCollection,为它分配时间戳,并将它“窗口”到滑动窗口中。在分组转换之后,我想将生成的PCollection分配回全局窗口。我一直不知道该怎么做。参见下面的梁伪代码示例:

将apache_梁导入为梁
将beam.Pipeline()作为p:
(
P
|beam.io.ReadFromText()
|beam.ParDo(AddTimestampDoFn())
|beam.WindowInto(beam.window.SlidingWindows(60,60))
|beam.GroupByKey()
|beam.ParDo(SomethingElse()
|beam.WindowInto(GlobalWindow())#这里是我想回到全局窗口的地方
)

关于如何进行此操作,您有什么想法吗?

使用
beam.WindowInto(window.GlobalWindows())
应该可以。例如,使用此快速测试:

data=[{'message':'Hi','timestamp':time.time()}]
事件=(p
|“创建事件”>>beam.Create(数据)\
|'addtimestamps'>>beam.Map(lambda x:beam.window.TimestampedValue(x,x['timestamp']))\
|“滑动窗口”>>beam.WindowInto(beam.window.SlidingWindows(60,60))\
|“第一个窗口”>>beam.ParDo(DebugPrinterFn())\
|“全局窗口”>>beam.WindowInto(Window.GlobalWindows())\
|“第二个窗口”>>beam.ParDo(DebugPrinterFn())
其中
DebugPrinterFn
打印窗口信息:

class-DebugPrinterFn(beam.DoFn):
“”“只打印元素和窗口”“”
def过程(自身、元素、窗口=beam.DoFn.WindowParam):
logging.info(“在窗口中接收到消息%s=%s”,元素['message'],窗口)
屈服要素
我得到以下输出:

INFO:root:Received message Hi in window=[1575565500.0, 1575565560.0)
INFO:root:Received message Hi in window=GlobalWindow
使用
DirectRunner
和2.16.0 SDK进行测试。如果它不适用于您:

  • 你有什么错误吗
  • 您使用的是哪种runner和SDK
完整代码