flink學習之二-入門版概念

Flink基礎(chǔ)

flink的安裝:

如果為單機環(huán)境炬转,直接從flink官網(wǎng)下載最新的flink包解壓即可。

下載地址:https://flink.apache.org/downloads.html

flink可以存儲中間結(jié)果驻啤、savepoints等信息荐吵,而存儲的介質(zhì)可以選擇hadoop先煎,所以這里下載<Apache Flink 1.7.1 with Hadoop? 2.8>

下載后,解壓遥倦,然后執(zhí)行bin下的start-cluster.sh即可啟動

啟動成功后占锯,可以在瀏覽器中輸入:http://localhost:8081就可以看到flink的管理控制臺,如下:

flink_dashboard.png

另外,如果只是單純希望調(diào)試運行flink的job(使用main方法啟動)疑俭,其實可以不用安裝flink環(huán)境婿失,flink支持在IDE中直接以項目依賴包的形式運行,只是僅限于調(diào)試哩照。

flink中所有job都是通過taskmanager來執(zhí)行的懒浮,是否能立即執(zhí)行识藤,需要看有沒有可用的slot痴昧。

一個job的生命周期是: CREATED -->【 SCHEDULED 】-->DEPLOYING --> RUNNING --> FINISHED

SCHEDULED 狀態(tài)為可選

創(chuàng)建flink-java項目:

mvn archetype:generate \
    -DarchetypeGroupId=org.apache.flink \
    -DarchetypeArtifactId=flink-quickstart-java \
    -DarchetypeVersion=1.7.0 \
    -DgroupId=wiki-edits \
    -DartifactId=wiki-edits \
    -Dversion=0.1 \
    -Dpackage=wikiedits \
    -DinteractiveMode=false

Flink中的核心概念--入門版(更多的是DataStream API)

(僅根據(jù)目前接觸到的一些核心概念做記錄)

  • DataStream: 數(shù)據(jù)流冠王,flink中所有數(shù)據(jù)都以流的方式展現(xiàn)。
  • StreamExecutionEnvironment: 流執(zhí)行的環(huán)境豪娜,目前看到的很多例子都是通過創(chuàng)建這個對象來串聯(lián)整體處理流程的哟楷。一般通過
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

這種方式來創(chuàng)建對象吓蘑。

  • DataSource:數(shù)據(jù)源,通過env.addSource()來設(shè)置溃蔫。一般可以從db琳猫、kafka等地方獲取數(shù)據(jù)作為源。所有dataSource均需要繼承 RichSourceFunction 這個抽象類统刮,實現(xiàn)其中的open账千、close、run鞭衩、cancel等方法娃善。

  • Sink:沉淀、使下沉坯台,在這里指將處理之后的數(shù)據(jù)存儲起來的地方瘫寝,一般可以放在redis稠炬、db酸纲、kafka等中瑟匆,通過 dataSource.addSink()來設(shè)置,可以同時設(shè)置多個sink疾嗅。如下:

    dataStreamSource.addSink(new UrlMysqlSink());        
    dataStreamSource.addSink(new PrintSinkFunction<>());
    

    其中PrintSinkFunction是直接輸出到控制臺冕象,urlMysqlSink則是一個自定義的mysql sink。

    自定義Sink需要繼承 RichSinkFunction 這個抽象類论悴,并實現(xiàn)其中的open墓律、invoke方法。

  • Transformation:各種轉(zhuǎn)換察纯,輸入一個或多個Stream针肥,輸出一個或者多個Stream慰枕,常用的transformation如下:

    • map:轉(zhuǎn)換,類似于java8中stream的map乡洼,輸入一個流匕坯,轉(zhuǎn)換輸出另外一個流

    • flatmap:與map類似拔稳,但是flat的意思是展開,也就是結(jié)果只有一層术奖,不會有嵌套集合

      flatmap中需要實現(xiàn)以下方法,可以看到輸出的是collector佣耐,也就是只有一層集合唧龄,而不是嵌套既棺。

      void flatMap(T var1, Collector<O> var2) throws Exception;
      
    • reduce:返回單個的結(jié)果值,并且 reduce 操作每處理一個元素總是創(chuàng)建一個新值丸冕∨种颍可以用來實現(xiàn)average、sum众旗、max答捕、min、count等功能艘款。

    • keyby:類似于sql中的group by沃琅,根據(jù)某個字段做分組操作,分組后才可以做更多后續(xù)的操作晌柬。返回的是一個KeyedStream<Object, Type-key> 的流郭脂,后面的是key類型展鸡。

    • filter:過濾器,其中需要實現(xiàn)的FilterFunction方法返回的是true/false涤久,true代表數(shù)據(jù)會包含在返回數(shù)據(jù)中,false則當前數(shù)據(jù)會被過濾掉考抄。

    • window:用來對一個無限的流設(shè)置一個有限的集合蔗彤,在有界的數(shù)據(jù)集上進行操作的一種機制幕与。window 又可以分為基于時間(Time-based)的 window 以及基于數(shù)量(Count-based)的 window。

      • tumbling time windows(翻滾時間窗口) -- 不會有窗口重疊潮饱,也就是一個元素只能出現(xiàn)在一個窗口中

      • sliding time windows(滑動時間窗口)--會有窗口重疊诫给,也就是一個元素可以出現(xiàn)在多個窗口中

        data.keyBy(1)
          .timeWindow(Time.minutes(1)) //tumbling time window 每分鐘統(tǒng)計一次數(shù)量和
          .sum(1);
        
        data.keyBy(1)
          .timeWindow(Time.minutes(1), Time.seconds(30)) //sliding time window 每隔 30s 統(tǒng)計過去一分鐘的數(shù)量和
          .sum(1);
        
    • timeWindow: 如上所說,根據(jù)時間來聚合流數(shù)據(jù)凫碌。例如:一分鐘的 tumbling time window 收集一分鐘的元素盛险,并在一分鐘過后對窗口中的所有元素應用于一個函數(shù)勋又。

    • windowAll:

    • Aggregations:累積、聚合

      • min/minBy:
      • max/maxBy:
      • sum:
    • union:

    • window join:

    • split:

    • select:

    • project:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蹲嚣,隨后出現(xiàn)的幾起案子隙畜,更是在濱河造成了極大的恐慌,老刑警劉巖议惰,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡讯屈,警方通過查閱死者的電腦和手機县习,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門躁愿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人来候,你說我怎么就攤上這事逸雹。” “怎么了转质?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長帖世。 經(jīng)常有香客問我休蟹,道長,這世上最難降的妖魔是什么日矫? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任赂弓,我火速辦了婚禮,結(jié)果婚禮上搬男,老公的妹妹穿的比我還像新娘拣展。我一直安慰自己,他們只是感情好缔逛,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布备埃。 她就那樣靜靜地躺著,像睡著了一般按脚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敦冬,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天辅搬,我揣著相機與錄音,去河邊找鬼。 笑死堪遂,一個胖子當著我的面吹牛介蛉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播溶褪,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼币旧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了猿妈?” 一聲冷哼從身側(cè)響起吹菱,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎彭则,沒想到半個月后鳍刷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡俯抖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年输瓜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚌成。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡前痘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出担忧,到底是詐尸還是另有隱情芹缔,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布瓶盛,位于F島的核電站最欠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏惩猫。R本人自食惡果不足惜芝硬,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望轧房。 院中可真熱鬧拌阴,春花似錦、人聲如沸奶镶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厂镇。三九已至纤壁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捺信,已是汗流浹背酌媒。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秒咨。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓喇辽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親雨席。 傳聞我的和親對象是個殘疾皇子茵臭,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容