根据时间或结束标记聚合流中的记录
Aggregate records in a stream based on time or end marker
考虑表示用户交互(例如产品购买)的交织记录输入流的概念。想象一下,我们收到的记录表明用户已将产品放入他们的购物篮。一段时间后,他们执行结帐...或...放弃他们的购物车。
因此我收到了一系列记录,例如:
- 交易:123,将商品 A 添加到购物篮
- 交易:123,将商品 B 添加到购物篮
- ...
- 交易:123,签出购物篮
我的目标是从管道输出交易的总和。例如,鉴于以上,我想输出:
Transaction 123, Items A, B, ... Sale completed
或者如果在上次活动后 24 小时内没有退房:
Transaction 123, Items A, B, ... Sale abandoned
...这就是我被困的地方。我觉得有一些方法可以从 Apache Beam 管道的角度来思考这个故事,但恐怕我不知道从哪里开始。我在想我想以某种方式 window 交易和终止的记录,并且只在收到交易记录的 end 或某个时间时发出批处理自上次看到记录以来已经过去了时间间隔。
基于数据的 window 标记对 Beam 不支持的数据排序有一个固有的假设。在上面的场景中,假设结帐事件将在所有添加到购物车事件之后发生。
然而,要粗略地解决这个问题,您可以使用 State 和 Session window 来粗略地表达它。
PCollection-RawEvents:读取原始事件
PCollection-1:PCollection-RawEvents -> 对所有事件应用 24 小时 SessionWindow
。
PCollection-Checkout:PCollection-1 -> 推送 BagState
中某个键的所有元素。当您收到结帐事件 Transaction: 123, Checked out basket
.
时,回读状态并发布事件 Transaction 123, Items A, B, ... Sale completed
PCollection-Abandon:PCollection-1 -> GroupByKey -> 如果 Transaction: 123, Checked out basket
不存在,则发布 Transaction 123, Items A, B, ... Sale abandoned
。
PCollection-Unified:扁平化(PCollection-Checkout,PCollection-Abandon)
考虑表示用户交互(例如产品购买)的交织记录输入流的概念。想象一下,我们收到的记录表明用户已将产品放入他们的购物篮。一段时间后,他们执行结帐...或...放弃他们的购物车。
因此我收到了一系列记录,例如:
- 交易:123,将商品 A 添加到购物篮
- 交易:123,将商品 B 添加到购物篮
- ...
- 交易:123,签出购物篮
我的目标是从管道输出交易的总和。例如,鉴于以上,我想输出:
Transaction 123, Items A, B, ... Sale completed
或者如果在上次活动后 24 小时内没有退房:
Transaction 123, Items A, B, ... Sale abandoned
...这就是我被困的地方。我觉得有一些方法可以从 Apache Beam 管道的角度来思考这个故事,但恐怕我不知道从哪里开始。我在想我想以某种方式 window 交易和终止的记录,并且只在收到交易记录的 end 或某个时间时发出批处理自上次看到记录以来已经过去了时间间隔。
基于数据的 window 标记对 Beam 不支持的数据排序有一个固有的假设。在上面的场景中,假设结帐事件将在所有添加到购物车事件之后发生。
然而,要粗略地解决这个问题,您可以使用 State 和 Session window 来粗略地表达它。
PCollection-RawEvents:读取原始事件
PCollection-1:PCollection-RawEvents -> 对所有事件应用 24 小时 SessionWindow
。
PCollection-Checkout:PCollection-1 -> 推送 BagState
中某个键的所有元素。当您收到结帐事件 Transaction: 123, Checked out basket
.
Transaction 123, Items A, B, ... Sale completed
PCollection-Abandon:PCollection-1 -> GroupByKey -> 如果 Transaction: 123, Checked out basket
不存在,则发布 Transaction 123, Items A, B, ... Sale abandoned
。
PCollection-Unified:扁平化(PCollection-Checkout,PCollection-Abandon)