duweike
duweike
在该项目里面,可以新增udf模块,涉及到udf、udaf、udtf等。 在进行相应的配置和只编译自定义函数模块,就可以马上进行测试,并且可以单步调试,给出一下demo函数和使用步骤说明等。 并且自定义函数需要注意flink 的版本,相同udf实现在不通版本之间可能会出现异常。
> 都是离线数据计算,如何保证实时的场景呢?比如用户下单15分钟后未完成订单,需要推送一条激活用户继续付费。 1,这个场景不是都是离线数据,是离线数据和实时数据相结合的。也就是同一个用户的历史数据使用离线,当天数据使用实时的,然后把两者实时的进行汇总。 2,您提的这个场景我们也有遇到过类似的,仔细分析后感觉比较复杂,通过别的方式避免了。初步分析的思路是通过自定义函数保存状态,窗口函数进行触发等方式处理,这里的款难点有两个:a)订单->付款是不同的事件,复杂时间处理;b)只有订单,没有付款事件,也就是没有出发是否超时的事件就要借助窗口、状态等来进行触发和判断是否超时了。
> 直接在下单买理财成功后利用AOP切面调用规则引擎算判断是否达标不就行了?历史的有跑批汇总,当天的实时汇总,二者加起来就行了。 您提到的规则引擎或者是Flink复杂事件处理CEP都是可以解决的,但是会引入一些稍微有点复杂难度的工具,对于只了解SQL的业务人员可能会比较抗拒类似于CEP这样的高级技能,并且在开发过程中的调试等也是很大的难题。 对于我们平台开发维护的人来说,是想要尽量一个简单的方式让业务人员使用,Flink SQL在我们的实践中是最佳的途径。
> 针对于 Flink CEP 结合规则引擎(动态更新规则) 实现实时触达或投放,此类业务各位大佬有详细的思路吗?我正在做这方面的技术选型,针对 Flink 还在学习中,希望不吝赐教。有几个例子,比如: > > * 订单下单后 N 分钟未支付 > * 用户在 A 行为前 24 小时内未发生 B 行为 这两个场景我觉得也是比较复杂的,关键点就是判断未发生的事件需要保存所有已发生的事件来判断。 1,如果仅有少量的这两个场景,我仍然建议自定义函数(主要是保存状态数据)和窗口(主要是为了触发计算)来处理。 2,如果类似为题比较多,可能引入别的组件比较方便,比如Redis(key失效策略)、CEP(实际生产中我不建议使用,门槛比较高,我们都是避免使用这个特性)。 3,想要启动马上生效,少量的历史数据,比如你说的24小时,可以使用kafka的特性指定开始时间开始消费历史数据,但这个特性有一个弊端或者发生错误的可能,就是kafka不同分区的数据消费速度不同导致逻辑判断错误,有一些逻辑错误可以通过上游生产者发送数据时,同一个用户必须发送到topic的同一个分区避免一部分。
> > > 针对于 Flink CEP 结合规则引擎(动态更新规则) 实现实时触达或投放,此类业务各位大佬有详细的思路吗?我正在做这方面的技术选型,针对 Flink 还在学习中,希望不吝赐教。有几个例子,比如: > > > > > > * 订单下单后 N 分钟未支付 > > > * 用户在 A 行为前 24 小时内未发生 B...