91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Flink中的sink實戰

發布時間:2021-12-27 15:02:03 來源:億速云 閱讀:408 作者:柒染 欄目:大數據

如何進行Flink中的sink實戰,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

關于sink

下圖來自Flink官方,紅框中就是sink,可見實時數據從Source處開始,在Transformation階段完成業務邏輯后在sink結束,因此sink可以用來處理計算結果,例如控制臺輸出或者保存數據庫: 如何進行Flink中的sink實戰

從一段實例代碼開始

  1. 下面是個簡單的flink應用代碼,紅框中的print方法就是sink操作: 如何進行Flink中的sink實戰

  2. 下圖是官方給出的sink方式,都是DataStream類的API,直接調用即可實現sink,剛才代碼中的print就是其中一個: 如何進行Flink中的sink實戰

  3. 接下來看看上圖中API的源碼,先看print方法,在DataStream.java中,如下,實際上是調用了addSink方法,入參是PrintSinkFunction: 如何進行Flink中的sink實戰

  4. 另一個常用API是writeAsText,源碼如下,調用了writeUsingOutputFormat方法: 如何進行Flink中的sink實戰

  5. 追蹤<font color="blue">writeUsingOutputFormat</font>發現也是調用了addSink,入參是<font color="blue">OutputFormatSinkFunction</font>: 如何進行Flink中的sink實戰

  6. print和writeAsText背后都在調用addSink,那么另一個常用的<font color="blue">writeAsCsv</font>方法呢?莫非也是調用addSink?打開一看果然,和writeAsText一樣調用了<font color="blue">writeUsingOutputFormat</font>,而該方法里面就是在調用addSink: 如何進行Flink中的sink實戰

  7. 綜上所述,data sink的關鍵就是<font color="blue">addSink</font>的入參,即<font color="blue">SinkFunction</font>接口的實現,通過類圖直觀看到常見的sink能力是如何實現的:

如何進行Flink中的sink實戰 8. 從上圖可見抽象類<font color="blue">RichSinkFunction</font>與各種sink能力的關系十分緊密,我們應該重點關注它,在類圖上展示方法簽名,如下圖: 如何進行Flink中的sink實戰 9. 如上圖所示,<font color="blue">RichSinkFunction</font>本身沒有內容,但是它實現<font color="blue">SinkFunction</font>,繼承<font color="blue">AbstractRichFunction</font>,是<font color="blue">RichFunction</font>和<font color="blue">SinkFunction</font>這兩種特性的結合; 10. <font color="blue">RichFunction</font>的特性在前面的《Flink的DataSource三部曲》中已經了解,就是資源的open和close; 11. <font color="blue">SinkFunction</font>的特性呢?顯然是用來處理計算結果的,類圖上顯示的是兩個invoke方法,來看看官方的<font color="blue">PrintSinkFunction.java</font>: 如何進行Flink中的sink實戰 12. <font color="blue">writer.write(record)</font>的源碼在PrintSinkOutputWriter.java,如下所示: 如何進行Flink中的sink實戰

至此,我們已經對Flink的sink有了基本了解:

  1. 負責實時計算結果的處理(如輸出或持久化);

  2. 主要實現方式是調用DataStream.addSink方法;

  3. 各種sink能力的實現,主要途徑是實現addSink方法的入參定義的接口;

關于如何進行Flink中的sink實戰問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新邵县| 西青区| 鄱阳县| 临沭县| 南召县| 宿松县| 伊宁县| 洪雅县| 定陶县| 博野县| 广安市| 司法| 巫山县| 长治县| 赤壁市| 屏东市| 休宁县| 鹤壁市| 夹江县| 沾益县| 都兰县| 波密县| 巍山| 韩城市| 镇康县| 申扎县| 长顺县| 攀枝花市| 阳泉市| 牙克石市| 阳山县| 德保县| 海安县| 大兴区| 罗甸县| 齐河县| 靖远县| 昌黎县| 织金县| 明水县| 孝感市|