flink-china / flink-forward-asia-hackathon-2021

本 GitHub 项目是 Flink Forward Asia Hackathon (2021) 的投票专用项目。
121 stars 19 forks source link

[参赛项目] AirSkiff - 一个轻量级跨平台批流数据处理框架 #4

Open tzhu-airwallex opened 2 years ago

tzhu-airwallex commented 2 years ago

项目简述

AirSkiff是一个轻量级的可跨平台运行的数据处理框架,同时支持批处理和流处理。它在上层定义了一些简单易用的接口,而其底层则可以由Flink,Spark或者其他数据处理引擎来实现。Airwallex从去年开始内部孵化该项目,目前已经在我们风控平台上的很多规则指标以及模型特征上使用了AirSkiff。目前,AirSkiff仅使用了Flink作为计算引擎。未来,我们希望能够引入更多的计算引擎,并且扩充现有的API以及能够支持的场景。

背景

在风控领域,不论是规则引擎还是机器学习模型,通常都有两个需求:1)线下回测或训练以及 2)线上实时评估。

对于规则引擎来说,线下回测可以帮助规则的制定者理解每条规则在过去的表现如何。这需要一个计算平台可以快速的计算大量数据,用离线的历史交易数据计算出一条规则所关注的指标,然后去评判该规则是否能够有效的检测出异常交易。而在实时方面,我们需要有一个计算平台可以用较低的延时计算出每一条指标,然后评判其相对应的规则是否应该被触发,从而拦截一笔交易。

对于机器学习模型而言,需求是类似的。我们需要一个计算平台从大量离线的历史数据中将特征抽取出来,然后用于模型的训练和验证。在实时方面,我们需要在一两百毫秒内把一个模型所需的交易特征计算出来,然后用模型给这笔交易的风险进行打分。

在过去,离线数据和实时数据的处理通常需要两套系统,两套代码,不仅不方便,还容易产生误差,导致离线和实时场景下的规则或者模型的性能不一致。AirSkiff致力于解决这一问题。用户只要定义一次Stream的计算逻辑,它就可以被编译到多个计算引擎上,在不同的场景下实现一致的数据处理,满足不同的需求。

目标

提供一套可以跑在包括Flink在内的多个计算引擎上的Stream API,来表达数据的计算逻辑,并实现不同的场景下的一致的数据处理。

实施方案

目前在我们的开源项目AirSkiff中,主要使用了Flink的DataStream还有Table API来做一些计算工作,把Stream API的代码逻辑转化成Flink可以理解的方法调用。在数据源和数据池端,我们使用Avro来进行数据的格式管理,加强数据的一致性。

成员介绍

团队成员一:朱天石 天池昵称:tc-231911

团队成员二:郝鑫 天池昵称:qlmx3wvhannce

团队成员三:吴斌 天池昵称:1008138670596408

团队成员四:陈黎妮 天池昵称:chenlini