2017-11-18 155 views
0

Guy我應該通過一些公用密鑰(我們正在談論多個REST服務調用的多個sql表)與一些REST服務的json加入一些巨大的SQL表。事情是這個數據不是實時/無限流,也不認爲我可以通過連接列來排序REST服務的輸出。現在,愚蠢的做法是將所有數據和行匹配起來,但這意味着將所有內容都存儲在內存/卡桑德拉或Redis等存儲中。但是,我想知道flink是否可以使用流窗口的某個王加入說X元素(所以真的只是在RAM中存儲這些元素在一個點),但也存儲不匹配的元素爲以後的匹配,也許某種的哈希映射。這就是我所說的聰明加入。apache flink可以用來加入巨大的非實時數據嗎?

王認爲

回答

1

魔鬼在細節,但肯定的,原則上這類數據富集與弗林克相當可行的。您的要求不完全清楚,但我可以提供一些指示。

對於初學者,您需要熟悉Flink的managed state接口。使用這些接口將確保您的應用程序具有容錯性,可升級性,可重新啓動性等。

如果您想簡單地預加載一些數據,那麼您可以使用RichFlatmap並在open()方法中加載數據。在你的情況下,CoProcessFunction可能更合適。這是一個帶有兩個輸入端的流操作符,它們可以保持狀態,並且可以訪問定時器(可以用來使不再需要的狀態到期,並在等待無序數據到達後發出結果)。

Flink也支持asynchronous i/o,這可以使外部服務更高效地工作。

也可以考慮通過將REST服務調用打包爲user-defined functions來與Flink的更高級別SQL and Table APIs接近。