一乏盐、可行性分析
Flink是一款分布式的計(jì)算引擎佳窑,它可以用來做批處理,即處理靜態(tài)的數(shù)據(jù)集丑勤、歷史的數(shù)據(jù)集华嘹;也可以用來做流處理吧趣,即實(shí)時(shí)地處理一些實(shí)時(shí)數(shù)據(jù)流法竞,實(shí)時(shí)地產(chǎn)生數(shù)據(jù)的結(jié)果。既然是一個(gè)實(shí)時(shí)計(jì)算平臺强挫,這里主要用到他的流處理能力岔霸。他被稱之為繼storm、sparkStreaming 之后的第三代流處理引擎俯渤。
對于應(yīng)用Flink的開發(fā)者來說關(guān)系的是數(shù)據(jù)源是什么呆细,做什么處理,數(shù)據(jù)落到哪里去八匠。這是一個(gè)通用的數(shù)據(jù)處理邏輯絮爷,在flink中抽象成 source、operator梨树、sink三部分坑夯。flinkSQL 中會把source定義成一張table,也就是tableSource。operator就是常寫的sql邏輯抡四,比如count柜蜈、group by 之類的仗谆。sink 在flinkSQl中稱為tableSink。在flinkSQL 編程過程中需要事先注冊TableSource 和 TableSink淑履,也就是源表是什么隶垮,結(jié)果表是什么,中間的sql就是從源表select 進(jìn)行sql聚合計(jì)算之類的秘噪,insert into 到結(jié)果表狸吞。
對于tableSource來說最終對接的數(shù)據(jù)源可以是關(guān)系型數(shù)據(jù)庫oracle、mysql..;可以是消息隊(duì)列kafka,可以是NOSQL Hbase缆娃、redis 之類的捷绒、等等。需要思考的無非就是在獲取這些數(shù)據(jù)源的時(shí)候怎么轉(zhuǎn)換成flink內(nèi)部的tabe贯要。
對于operator來說可以直接寫sql語句 + UDF函數(shù)就可以暖侨,當(dāng)然在流處理中還有一些特殊的計(jì)算比如window.。如果需要的話崇渗,那可能還需要創(chuàng)造sql之外的語法結(jié)構(gòu)字逗。最好的是將這些非sql原生的在平臺內(nèi)部消化掉,盡量讓用戶覺得易用宅广。
對于TableSink 來說同tableSource.因?yàn)槲覀兛赡軙褦?shù)據(jù)寫入各種組件葫掉。一個(gè)sql語句的在Flink里面是Row格式。我們需要做的就是解析SQL產(chǎn)生的Row結(jié)果寫入不同的組件跟狱。
二俭厚、平臺構(gòu)思
上面所述基本只是說明了這個(gè)平臺的可行性。該怎么實(shí)現(xiàn)呢驶臊?先對平臺進(jìn)行一下構(gòu)思挪挤。
一、平臺的通用性
既然是一個(gè)基于flinkSql實(shí)時(shí)計(jì)算平臺关翎。希望用戶更多的是寫sql來解決用戶的需求扛门。用戶可以選擇自己的數(shù)據(jù)源,然后編寫sql,然后選擇sql結(jié)果的落地方纵寝,便可以形成job進(jìn)行運(yùn)行论寨。這部分需要有一個(gè)前臺系統(tǒng)去支持。這里不是重點(diǎn)爽茴。但是最終前臺sql的編排會形成一個(gè)job的描述這個(gè)描述可以是一個(gè)josn串葬凳。大概分為4部分。
1室奏、source schema描述
主要是描述source是什么數(shù)據(jù)源火焰,他有哪些字段,字段的類型是什么
2窍奋、業(yè)務(wù)邏輯sql
這個(gè)就是簡單了就是一個(gè)sql語言荐健。和臨時(shí)表之類的
3酱畅、sink schema描述
主要是描述sink是什么數(shù)據(jù)源,他有哪些字段江场,字段的類型是什么
4纺酸、任務(wù)描述
主要描述這個(gè)任務(wù)在flink上運(yùn)行需要多少資源,等等一些flink內(nèi)部的參數(shù)
二址否、平臺怎么使用
上面所說的其實(shí)我們實(shí)現(xiàn)的只是一個(gè)在flink中適配各種數(shù)據(jù)存儲組件的程序包餐蔬。他只是一個(gè)模板。他本身是不知道使用人員是要干啥佑附。他必須拿到j(luò)ob的描述之后才能替開發(fā)sql的人員干活樊诺。job的描述相當(dāng)于是平臺的配置信息。下面是我的一個(gè)使用構(gòu)想圖音同。有更好方案的可以留言聯(lián)系我
三词爬、后續(xù)進(jìn)展透露<敬請關(guān)注>
一、針對數(shù)據(jù)源是JSON格式的并且是有嵌套對象权均,嵌套數(shù)組的怎么解析成Table
http://www.reibang.com/p/848a399d977e
二顿膨、剖析fink中kafkaTbaleSource的實(shí)現(xiàn)? ? ?
http://www.reibang.com/p/53b0f149d33e
三、剖析fink中kafkaTbaleSink的實(shí)現(xiàn)
原理同?剖析fink中kafkaTbaleSource的實(shí)現(xiàn)
http://www.reibang.com/p/53b0f149d33e