您好,登錄后才能下訂單哦!
小編給大家分享一下Flink中Table API是什么意思,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Table API & SQL 是一種聲明式的 API。用戶只需關(guān)心做什么,不用關(guān)心怎么做,比如圖中的 WordCount 例子,只需要關(guān)心按什么維度聚合,做哪種類型的聚合,不需要關(guān)心底層的實(shí)現(xiàn)。
高性能。Table API & SQL 底層會有優(yōu)化器對 query 進(jìn)行優(yōu)化。舉個例子,假如 WordCount 的例子里寫了兩個 count 操作,優(yōu)化器會識別并避免重復(fù)的計(jì)算,計(jì)算的時(shí)候只保留一個 count 操作,輸出的時(shí)候再把相同的值輸出兩遍即可,以達(dá)到更好的性能。
流批統(tǒng)一。上圖例子可以發(fā)現(xiàn),API 并沒有區(qū)分流和批,同一套 query 可以流批復(fù)用,對業(yè)務(wù)開發(fā)來說,避免開發(fā)兩套代碼。
標(biāo)準(zhǔn)穩(wěn)定。Table API & SQL 遵循 SQL 標(biāo)準(zhǔn),不易變動。API 比較穩(wěn)定的好處是不用考慮 API 兼容性問題。
易理解。語義明確,所見即所得。
Table API 使得多聲明的數(shù)據(jù)處理寫起來比較容易。
怎么理解?比如我們有一個 Table(tab),并且需要執(zhí)行一些過濾操作然后輸出到結(jié)果表,對應(yīng)的實(shí)現(xiàn)是:tab.where(“a < 10”).inertInto(“resultTable1”);此外,我們還需要做另外一些篩選,然后也對結(jié)果輸出,即 tab.where(“a > 100”).insertInto(“resultTable2”)。你會發(fā)現(xiàn),用 Table API 寫起來會非常簡潔方便,兩行代碼就把功能實(shí)現(xiàn)了。
Table API 是 Flink 自身的一套 API,這使得我們更容易地去擴(kuò)展標(biāo)準(zhǔn)的 SQL。當(dāng)然,在擴(kuò)展 SQL 的時(shí)候并不是隨意的去擴(kuò)展,需要考慮 API 的語義、原子性和正交性,并且當(dāng)且僅當(dāng)需要的時(shí)候才去添加。
對比 SQL,我們可以認(rèn)為 Table API 是 SQL 的超集。SQL 有的操作,Table API 可以有,然而我們又可以從易用性和功能性地角度對 SQL 進(jìn)行擴(kuò)展和提升。
第一步,注冊對應(yīng)的 TableSource
第二步,調(diào)用 Table environement 的 scan 方法獲取 Table 對象
通過 Table descriptor 來注冊
通過自定義 source 來注冊
通過 DataStream 來注冊
Table descriptor
自定義 Table sink
輸出成一個 DataStream
以上是“Flink中Table API是什么意思”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。