這篇文章準備利用DataSet API來完成數據比對的需求,至於流數據的實時比對,下壹篇文章將介紹。
核心的思想就是用兩個流(DataSet其實也是壹種特殊的DataStream)中的數據進行處理,Flink中就具備這樣的API。
通過 coGroup 、 where 和 equalTo 很容易講兩個流中orderNo相同的數據關聯在壹起, coGroup 和 join 不同, join 只會關聯key相同的數據,形成壹個數據集。而 coGroup 遇到指定key只有壹個數據集中有記錄的情況時,會將這個Group和空的Group關聯。
源碼
可以看到,利用Flink將兩方數據關聯是非常容易的。筆者在實際業務場景中,有些需求不僅需要關聯兩方數據的,在下發回盤文件的時候,還要關聯上其他方數據的情況(如商戶數據),這種情況目前想到的辦法有: