国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Flink雙流(join)

這篇具有很好參考價值的文章主要介紹了Flink雙流(join)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?一、介紹

Join大體分類只有兩種:Window Join和Interval Join

Window Join有可以根據(jù)Window的類型細分出3種:Tumbling(滾動) Window Join、Sliding(滑動) Window Join、Session(會話) Widnow Join。

??????????Window 類型的join都是利用window的機制,先將數(shù)據(jù)緩存在Window State中,當窗口觸發(fā)計算時,執(zhí)行join操作。

??????????Interval join也是利用state存儲數(shù)據(jù)再處理,區(qū)別在于state中的數(shù)據(jù)有失效機制,依靠數(shù)據(jù)觸發(fā)數(shù)據(jù)清理,目前Stream join的結果是數(shù)據(jù)的卡爾積。

二、Window Join

?Tumbling Window Join

????????執(zhí)行翻滾窗口聯(lián)接時,具有公共鍵和公告翻滾窗口的所有元素將成對組合聯(lián)接,并傳遞JoinFunction或FlatJoinFunction。因為它的行為類似于內部連接,所以一個流中的元素在其滾動窗口中沒有來自另一個流的元素,因此不會被發(fā)射。

????????如圖所示,我們定義了一個為2毫秒的翻滾窗口,結果窗口的形式為[0,1]、[2,3]..............該圖顯示了每個窗口中所以元素的成對組合,這些元素將傳遞給JoinFunction。注意在翻滾窗口[6,7]中沒有發(fā)射任何東西,因為綠色流中不存在與橙色元素⑥和⑦結合的元素。

Flink雙流(join),Flink,flink,大數(shù)據(jù)

import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.streaming.api.windowing.assigners.TumblingEventTimeWindows;
import org.apache.flink.streaming.api.windowing.time.Time;
 ...
DataStream<Integer> orangeStream = ...DataStream<Integer> greenStream = ...
orangeStream.join(greenStream)
    .where(<KeySelector>)
    .equalTo(<KeySelector>)
    .window(TumblingEventTimeWindows.of(Time.milliseconds(2)))
    .apply (new JoinFunction<Integer, Integer, String> (){
        @Override
        public String join(Integer first, Integer second) {
            return first + "," + second;
        }
    });

?Sliding Window Join

? ? ? ? 在執(zhí)行滑動窗口聯(lián)接時,具有公共鍵和公共滑動窗口的所以元素將作為成對組合聯(lián)接,并傳遞JoinFunction或FlatJoinFunction。在當前滑動窗口中,一個流的元素沒有來自另一個流的元素,則不會發(fā)射!請注意,某些元素可能會聯(lián)接到一個滑動窗口中,但不會聯(lián)接到另一個滑動窗口中!

? ? ? ? 在本例中,我們使用大小為2毫秒的滑動窗口,并將其滑動1毫秒,從而產生滑動窗口[-1,0],[1,2],[2,3]...........x軸下方的連續(xù)元素時傳遞給每個滑動窗口的Join Function的元素。在這里,你還可以看到,例如在窗口[2,3]中,橙色②和綠色③連接,但在窗口[1,2]中沒有與任何對象連接。

Flink雙流(join),Flink,flink,大數(shù)據(jù)

import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.streaming.api.windowing.assigners.SlidingEventTimeWindows;
import org.apache.flink.streaming.api.windowing.time.Time;
...
DataStream<Integer> orangeStream = ...DataStream<Integer> greenStream = ...
orangeStream.join(greenStream)
    .where(<KeySelector>)
    .equalTo(<KeySelector>)
    .window(SlidingEventTimeWindows.of(Time.milliseconds(2) /* size */, Time.milliseconds(1) /* slide */))
    .apply (new JoinFunction<Integer, Integer, String> (){
        @Override
        public String join(Integer first, Integer second) {
            return first + "," + second;
        }
    });

?Session Window Join

? ? ? ? 在執(zhí)行會話窗口聯(lián)接時,具有相同鍵(當“組合”滿足會話條件)的所有元素以成對組合方式聯(lián)接,并傳遞給JoinFunction或FlatJoinFunction。同樣,這執(zhí)行一個內部連接,所以如果有一個會話窗口只包含來自一個流的元素,則不會發(fā)出任何輸出

? ? ? ? 這里,我們定義一個會話窗口連接,其中每個會話被至少1毫秒的時間分割。有三個會話,在前兩個會話中,來自兩個流的連接元素被傳遞給JoinFunction。在第三個會話中,綠色流中沒有元素,所以⑧和⑨沒有連接!

Flink雙流(join),Flink,flink,大數(shù)據(jù)

import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.streaming.api.windowing.assigners.EventTimeSessionWindows;
import org.apache.flink.streaming.api.windowing.time.Time;
 ...
DataStream<Integer> orangeStream = ...DataStream<Integer> greenStream = ...
orangeStream.join(greenStream)
    .where(<KeySelector>)
    .equalTo(<KeySelector>)
    .window(EventTimeSessionWindows.withGap(Time.milliseconds(1)))
    .apply (new JoinFunction<Integer, Integer, String> (){
        @Override
        public String join(Integer first, Integer second) {
            return first + "," + second;
        }
    });

三、Interval Join

????????前面學習的Window Join必須要在一個Window中進行Join,那如果沒有Window如何處理呢?interval join也是使用相同的key來join兩個流(流A、流B),并且流B中的元素中的時間戳,和流A元素的時間戳,有一個時間間隔。

b.timestamp ∈ [a.timestamp + lowerBound; a.timestamp + upperBound]?or

a.timestamp + lowerBound <= b.timestamp <= a.timestamp + upperBound

也就是:流B的元素的時間戳 ≥ 流A的元素時間戳 + 下界,且,流B的元素的時間戳 ≤ 流A的元素時間戳

?Flink雙流(join),Flink,flink,大數(shù)據(jù)

在上面的示例中,我們將兩個流“orange”和“green”連接起來,其下限為-2毫秒,上限為+1毫秒。默認情況下,這些邊界是包含的,但是可以應用.lowerBoundExclusive()和.upperBoundExclusive來更改行為orangeElem.ts + lowerBound <= greenElem.ts <= orangeElem.ts + upperBound?

import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.streaming.api.functions.co.ProcessJoinFunction;
import org.apache.flink.streaming.api.windowing.time.Time;
...
DataStream<Integer> orangeStream = ...DataStream<Integer> greenStream = ...
orangeStream
    .keyBy(<KeySelector>)
    .intervalJoin(greenStream.keyBy(<KeySelector>))
    .between(Time.milliseconds(-2), Time.milliseconds(1))
    .process (new ProcessJoinFunction<Integer, Integer, String(){

        @Override
        public void processElement(Integer left, Integer right, Context ctx, Collector<String> out) {
            out.collect(first + "," + second);
        }
    });

?文章來源地址http://www.zghlxwxcb.cn/news/detail-835296.html

到了這里,關于Flink雙流(join)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • flink雙流ioin的大狀態(tài)如何解決和調優(yōu)

    Flink 中的雙流 ioin 操作(雙流連接)通常涉及大狀態(tài)的處理,這可能導致一些性能和狀態(tài)管理的挑戰(zhàn)。以下是解決和調優(yōu) Flink 中雙流 ioin 大狀態(tài)的一些建議: 解決方案: 增大任務管理器的堆內存: 對于處理大狀態(tài)的任務,增加 Flink 任務管理器的堆內存可以提供更多的內存

    2024年01月22日
    瀏覽(33)
  • 【flink番外篇】2、flink的23種算子window join 和interval join 數(shù)據(jù)傾斜、分區(qū)介紹及詳細示例(1)- window join

    一、Flink 專欄 Flink 專欄系統(tǒng)介紹某一知識點,并輔以具體的示例進行說明。 1、Flink 部署系列 本部分介紹Flink的部署、配置相關基礎內容。 2、Flink基礎系列 本部分介紹Flink 的基礎部分,比如術語、架構、編程模型、編程指南、基本的datastream api用法、四大基石等內容。 3、

    2024年02月03日
    瀏覽(21)
  • 【flink番外篇】2、flink的23種算子window join 和interval join 數(shù)據(jù)傾斜、分區(qū)介紹及詳細示例(3)- 數(shù)據(jù)傾斜處理、分區(qū)示例

    一、Flink 專欄 Flink 專欄系統(tǒng)介紹某一知識點,并輔以具體的示例進行說明。 1、Flink 部署系列 本部分介紹Flink的部署、配置相關基礎內容。 2、Flink基礎系列 本部分介紹Flink 的基礎部分,比如術語、架構、編程模型、編程指南、基本的datastream api用法、四大基石等內容。 3、

    2024年02月03日
    瀏覽(34)
  • 【大數(shù)據(jù)】Flink SQL 語法篇(六):Temporal Join

    《 Flink SQL 語法篇 》系列,共包含以下 10 篇文章: Flink SQL 語法篇(一):CREATE Flink SQL 語法篇(二):WITH、SELECT WHERE、SELECT DISTINCT Flink SQL 語法篇(三):窗口聚合(TUMBLE、HOP、SESSION、CUMULATE) Flink SQL 語法篇(四):Group 聚合、Over 聚合 Flink SQL 語法篇(五):Regular Join、

    2024年03月15日
    瀏覽(67)
  • 【flink番外篇】15、Flink維表實戰(zhàn)之6種實現(xiàn)方式-通過Temporal table實現(xiàn)維表數(shù)據(jù)join

    一、Flink 專欄 Flink 專欄系統(tǒng)介紹某一知識點,并輔以具體的示例進行說明。 1、Flink 部署系列 本部分介紹Flink的部署、配置相關基礎內容。 2、Flink基礎系列 本部分介紹Flink 的基礎部分,比如術語、架構、編程模型、編程指南、基本的datastream api用法、四大基石等內容。 3、

    2024年01月20日
    瀏覽(27)
  • 【大數(shù)據(jù)】Flink SQL 語法篇(七):Lookup Join、Array Expansion、Table Function

    《 Flink SQL 語法篇 》系列,共包含以下 10 篇文章: Flink SQL 語法篇(一):CREATE Flink SQL 語法篇(二):WITH、SELECT WHERE、SELECT DISTINCT Flink SQL 語法篇(三):窗口聚合(TUMBLE、HOP、SESSION、CUMULATE) Flink SQL 語法篇(四):Group 聚合、Over 聚合 Flink SQL 語法篇(五):Regular Join、

    2024年04月25日
    瀏覽(52)
  • flink1.18.0 flink維表join新思路

    弊端: ? ? ? ? 雖然緩存可以減輕維表負擔,但是如果事實表數(shù)據(jù)量很大,每秒千萬條,維度表只有百萬條,也就是說 你會看到大量的無法關聯(lián)的數(shù)據(jù)仍然需要查詢維度表.? cache緩存千萬數(shù)據(jù)量內存壓力又比較大, 那么怎么減輕維表數(shù)據(jù)庫壓力,還能做到低延遲. 以往雙流join ; a joi

    2024年01月24日
    瀏覽(31)
  • Flink join詳解

    Flink join詳解

    Flink SQL支持對動態(tài)表進行復雜而靈活的連接操作。 為了處理不同的場景,需要多種查詢語義,因此有幾種不同類型的 Join。 默認情況下,joins 的順序是沒有優(yōu)化的。表的 join 順序是在? FROM ?從句指定的??梢酝ㄟ^把更新頻率最低的表放在第一個、頻率最高的放在最后這種方

    2024年02月21日
    瀏覽(18)
  • Flink:流式 Join 類型 / 分類 盤點 (一)

    Flink:流式 Join 類型 / 分類 盤點 (一)

    博主歷時三年精心創(chuàng)作的《大數(shù)據(jù)平臺架構與原型實現(xiàn):數(shù)據(jù)中臺建設實戰(zhàn)》一書現(xiàn)已由知名IT圖書品牌電子工業(yè)出版社博文視點出版發(fā)行,點擊《重磅推薦:建大數(shù)據(jù)平臺太難了!給我發(fā)個工程原型吧!》了解圖書詳情,京東購書鏈接:https://item.jd.com/12677623.html,掃描左側

    2024年03月17日
    瀏覽(24)
  • Flink多流處理之join(關聯(lián))

    Flink的 API 中只提供了 join 的算子,并沒有 left join 或者 right join ,這里我們就介紹一下 join 算子的使用,其實 join 算子底層調用的就是 coGroup ,具體原理這里就不過多介紹了,如果感興趣可以看我前面發(fā)布的文章Flink多流操作之coGroup. 數(shù)據(jù)源 代碼 結果 這個 API 使用起來還是比較簡單

    2024年02月13日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包