基於Flink的windows--簡介

來源:互聯網
上載者:User

標籤:操作   開源   sign   create   new   start   object   job   tar   

  新的一年,新的開始,新的習慣,現在開始。

 1.簡介

  Flink是德國一家公司名為dataArtisans的產品,2016年正式被apache提升為頂級項目(地位同spark、storm等開源架構)。並且在2016年裡,共發布了包括1.0.0版本在內的10個版本,發展速度可想而知。這次學習的是Flink的核心Feature,windows

  //dataArtisans官網:

  http://data-artisans.com/

  //apache Flink官網:

  http://flink.apache.org/

  2.windows  2.1 what Flink windows

  人們處理資料通常把流式的資料轉換成批再對其進行處理比如一些累計統計。面對源源不斷的流,這種處理方式衍生出了一種新的名詞-windows。就是一個典型的windows操作。

  

  2.2 why Flink windows

  Flink提供了一套簡單易用並且靈活可擴充的windows介面,從視窗類別型可分為滑動視窗,固定視窗,會話視窗,從視窗性質可分為事件視窗,時間視窗。

 

  2.3 how Flink windows

  Flink的window分成三部分,按運行順序依次為 WindowAssigner,Trigger,Evictor。為官網提供的解釋

  

  資料進來首先被windowAssigner分到不同的window,一個資料可以同時存在於多個window。每個window都有一個Trigger,用來判斷資料是應該purge還是evaluate。當資料被evaluate,會進入到Evictor(本人感覺類似於過濾器)。使用者可以在evaluate的時候自訂處理邏輯,類似於sum(),min(),max()之類的ReduceFunctionFoldFunction, or WindowFunction。

  下面是代碼實戰

  申明:所有運行環境基於Flink官方提供的Flink Quickstart Job 1.1.3。

  

val env = StreamExecutionEnvironment.getExecutionEnvironment    // create streams for names and ages by mapping the inputs to the corresponding objects    val text = env.socketTextStream("127.0.0.1", 12580)    val counts = text.map {str=>      val arr = str.split(",")      (arr(0),arr(1).toInt)    }      .keyBy(0)      .countWindow(3)      .sum(1)    counts.print()    env.execute("Scala WordCount from SocketTextStream Example")

  測試資料來源為socket,預設以\n作為stream的分隔字元,服務端發送的資料依次為:

  a,1

  a,2

  b,1

  b,1

  a,3

  b,1

  最終程式結果如下:

  (a,6)

  (b,3)

  這個案例基於Flink提供的原生事件countWindows,其中已經包括了windowAssigner,Trigger,Evictor

  備忘:

  必須匯入指定包,否則會找不到類

  報錯:Error:(18, 27) could not find implicit value for evidence parameter of type org.apache.flink.api.common.typeinfo.TypeInformation[(String, Int)]
  val counts = text.map {str=>

  加入:import org.apache.flink.streaming.api.scala._

  

  參考資料:

  //apache官網介紹的quickstart

  https://ci.apache.org/projects/flink/flink-docs-release-1.1/quickstart/scala_api_quickstart.html

  //apache官網介紹的Flink windows

  http://flink.apache.org/news/2015/12/04/Introducing-windows.html

  

基於Flink的windows--簡介

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.