使用Flink批处理完成数据比对(对账)三
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Flink批处理完成数据比对(对账)三相关的知识,希望对你有一定的参考价值。
参考技术A 前面的文章 使用Flink批处理完成数据比对(对账)二 讨论了使用Table API来处理数据比对的问题,但有些场景下还会有一些比较复杂的业务需求,如输出的时候要将两边的数据合并在一起输出,这个时候用Table API就不太好完成这样的需求了,这就需要借助底层的DataSet API和Process Function。这篇文章准备利用DataSet API来完成数据比对的需求,至于流数据的实时比对,下一篇文章将介绍。
核心的思想就是用两个流(DataSet其实也是一种特殊的DataStream)中的数据进行处理,Flink中就具备这样的API。
通过 coGroup 、 where 和 equalTo 很容易讲两个流中orderNo相同的数据关联在一起, coGroup 和 join 不同, join 只会关联key相同的数据,形成一个数据集。而 coGroup 遇到指定key只有一个数据集中有记录的情况时,会将这个Group和空的Group关联。
源码
可以看到,利用Flink将两方数据关联是非常容易的。笔者在实际业务场景中,有些需求不仅需要关联两方数据的,在下发回盘文件的时候,还要关联上其他方数据的情况(如商户数据),这种情况目前想到的办法有:
以上是关于使用Flink批处理完成数据比对(对账)三的主要内容,如果未能解决你的问题,请参考以下文章