【问题标题】:Is Flink's Match_Recognize function suitable for capturing this type of pattern?Flink 的 Match_Recognize 函数是否适合捕获这种类型的模式?
【发布时间】:2021-09-27 13:20:29
【问题描述】:

我正在尝试以下述模式捕捉事件:

  • 开始事件 = SalePackageA 事件(客户 A 购买 PackageA)
  • 2-nd 事件 = PackageUsage 事件(客户 A 使用 PackageA)
  • 3-rd 事件 = PackageUsage 事件(客户 A 使用 PackageA)
  • 第 4 个事件 = PackageUsage 事件(客户 A 使用 PackageA)
  • ...
  • 第 N 个事件 = PackageUsage 事件(客户 A 使用 PackageA)
  • 停止事件 = SalePackageA 事件(客户 A 再次购买 PackageA)

即:客户购买了一些余额为 2048mb 的数据包,然后客户使用它 - 我在每个 PackageUsage 事件中收到使用的字节。

因此,match_recognize 应该使用一些聚合逻辑对每个 PackageUsage 事件大喊:

( SalePackageA.Initial_Balance_Bytes - sum(present_event__PackageUsage.usage_bytes + sum(all_previous__PackageUsages.usage_bytes)) ) as Remaining_Balance

当同一个客户购买同一个包裹时,这个“流程”应该被打断,新的“流程”会重新开始。

Flink 的 CEP 是否适用于所描述的案例?任何想法/建议如何使用 CEP 来实现?

【问题讨论】:

    标签: apache-flink flink-streaming flink-sql flink-cep match-recognize


    【解决方案1】:

    MATCH_RECOGNIZE 和 CEP 不能很好地满足您的要求(因为您需要在每次使用事件后报告余额)。

    我的建议是使用键控流程函数来实现这一点。

    【讨论】:

      猜你喜欢
      • 2017-08-10
      • 1970-01-01
      • 2011-05-07
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2013-03-29
      • 1970-01-01
      相关资源
      最近更新 更多