日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bat窗口大小设置_8-Flink中的窗口

發布時間:2023/12/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bat窗口大小设置_8-Flink中的窗口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

戳原文:

1-Flink入門

2-本地環境搭建&構建第一個Flink應用

3-DataSet API 4-DataSteam API

5-集群部署

6-分布式緩存

7-重啟策略

8-Flink中的窗口

9-Flink中的Time

窗口

窗口類型

  • flink支持兩種劃分窗口的方式(time和count) 如果根據時間劃分窗口,那么它就是一個time-window 如果根據數據劃分窗口,那么它就是一個count-window
  • flink支持窗口的兩個重要屬性(size和interval)
    • 如果size=interval,那么就會形成tumbling-window(無重疊數據)
    • 如果size>interval,那么就會形成sliding-window(有重疊數據)
    • 如果size<interval,那么這種窗口將會丟失數據。比如每5秒鐘,統計過去3秒的通過路口汽車的數據,將會漏掉2秒鐘的數據。
  • 通過組合可以得出四種基本窗口:
    • time-tumbling-window 無重疊數據的時間窗口,設置方式舉例:timeWindow(Time.seconds(5))
    • time-sliding-window 有重疊數據的時間窗口,設置方式舉例:timeWindow(Time.seconds(5), Time.seconds(3))
    • count-tumbling-window無重疊數據的數量窗口,設置方式舉例:countWindow(5)
    • count-sliding-window 有重疊數據的數量窗口,設置方式舉例:countWindow(5,3)
  • flink支持在stream上的通過key去區分多個窗口
  • 窗口的實現方式
    上一張經典圖:

    • Tumbling Time Window
    假如我們需要統計每一分鐘中用戶購買的商品的總數,需要將用戶的行為事件按每一分鐘進行切分,這種切分被成為翻滾時間窗口(Tumbling Time Window)。翻滾窗口能將數據流切分成不重疊的窗口,每一個事件只能屬于一個窗口。// 用戶id和購買數量 stream val counts: DataStream[(Int, Int)] = ... val tumblingCnts: DataStream[(Int, Int)] = counts// 用userId分組.keyBy(0) // 1分鐘的翻滾窗口寬度.timeWindow(Time.minutes(1))// 計算購買數量.sum(1)
    • Sliding Time Window
    我們可以每30秒計算一次最近一分鐘用戶購買的商品總數。這種窗口我們稱為滑動時間窗口(Sliding Time Window)。在滑窗中,一個元素可以對應多個窗口。通過使用 DataStream API,我們可以這樣實現:val slidingCnts: DataStream[(Int, Int)] = buyCnts.keyBy(0) .timeWindow(Time.minutes(1), Time.seconds(30)).sum(1)
    • Tumbling Count Window

    當我們想要每100個用戶購買行為事件統計購買總數,那么每當窗口中填滿100個元素了,就會對窗口進行計算,這種窗口我們稱之為翻滾計數窗口(Tumbling Count Window),上圖所示窗口大小為3個。通過使用 DataStream API,我們可以這樣實現:

    // Stream of (userId, buyCnts) val buyCnts: DataStream[(Int, Int)] = ...val tumblingCnts: DataStream[(Int, Int)] = buyCnts// key stream by sensorId.keyBy(0)// tumbling count window of 100 elements size.countWindow(100)// compute the buyCnt sum .sum(1)
    • Session Window

    在這種用戶交互事件流中,我們首先想到的是將事件聚合到會話窗口中(一段用戶持續活躍的周期),由非活躍的間隙分隔開。如上圖所示,就是需要計算每個用戶在活躍期間總共購買的商品數量,如果用戶30秒沒有活動則視為會話斷開(假設raw data stream是單個用戶的購買行為流)。Session Window 的示例代碼如下:

    // Stream of (userId, buyCnts) val buyCnts: DataStream[(Int, Int)] = ...val sessionCnts: DataStream[(Int, Int)] = vehicleCnts.keyBy(0)// session window based on a 30 seconds session gap interval .window(ProcessingTimeSessionWindows.withGap(Time.seconds(30))).sum(1)

    一般而言,window 是在無限的流上定義了一個有限的元素集合。這個集合可以是基于時間的,元素個數的,時間和個數結合的,會話間隙的,或者是自定義的。Flink 的 DataStream API 提供了簡潔的算子來滿足常用的窗口操作,同時提供了通用的窗口機制來允許用戶自己定義窗口分配邏輯。
    公眾號推薦

    • 全網唯一一個從0開始幫助Java開發者轉做大數據領域的公眾號,BAT團隊集體開發~
    • 海量【java和大數據的面試題+視頻資料】整理在公眾號,關注后可以下載~
    • 更多大數據技術歡迎和作者一起探討~

    總結

    以上是生活随笔為你收集整理的bat窗口大小设置_8-Flink中的窗口的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。