国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Flink Table API/SQL 是如何變成程序運行的

開發(fā) 架構(gòu)
Table Api 和 SQL 是流批通用的,代碼完全可以復(fù)用。不必流式程序使用 DataStream Api,批處理使用 DataSet Api (注:社區(qū)未來可能會廢棄 Dataset Api,統(tǒng)一使用 DataStream Api 來開發(fā)批流程序)。

[[382136]]

 本文轉(zhuǎn)載自微信公眾號「KK架構(gòu)師」,作者wangkai。轉(zhuǎn)載本文請聯(lián)系KK架構(gòu)師公眾號。

一、Flink Api 的分層抽象

如上圖,最下面一層是 Process Function ,可以去做一些有狀態(tài)的計算,注冊 Timer 定時器,可以做更復(fù)雜的操作,靈活性更高,可以做非常復(fù)雜的定制開發(fā);

第二層是 DataStream Api,基于 Process Function,封裝了很多的操作。比如可以方便做一個 KeyBy 操作 + Window 的聚合;

最上面一層是 關(guān)系型 Api,是在 DataStream Api 之上的更高級的抽象,我們可以借助 SQL 這種非常經(jīng)典的穩(wěn)定的語言,來構(gòu)建實時流程序。

二、為什么要提供 Table Api 和 SQL?

1. 開發(fā)繁瑣

DataStream Api / Process Function 更加面向的是開發(fā)者,想要開發(fā)出合理的 Flink 程序,至少需要具備以下技能:

  • 具有 Java 、Scala 開發(fā)經(jīng)驗;
  • 需要對 Time、State 以及 Window 等流式概念有非常深入的了解;
  • 具有分布式處理的經(jīng)驗和知識;
  • 具有作業(yè)調(diào)優(yōu)的經(jīng)驗;

這樣的話,對數(shù)據(jù)分析人員和業(yè)務(wù)人員很不友好,使用起來學(xué)習(xí)成本非常高,望塵莫及。

并且開發(fā)起來非常繁瑣,開發(fā)應(yīng)用需要使用 Function 接口,即使是一個簡單的過濾也要實現(xiàn)一個 FilterFunction 匿名類,而使用 Table Api 則簡單很多。

2. 代碼不通用

Table Api 和 SQL 是流批通用的,代碼完全可以復(fù)用。不必流式程序使用 DataStream Api,批處理使用 DataSet Api (注:社區(qū)未來可能會廢棄 Dataset Api,統(tǒng)一使用 DataStream Api 來開發(fā)批流程序)。

3. 框架很難優(yōu)化

在使用 DataStream Api 和 DataSet Api 開發(fā)應(yīng)用的時候,F(xiàn)link 框架只能進行非常有限的優(yōu)化,需要開發(fā)者非常謹(jǐn)慎的編寫高效的應(yīng)用程序。

而使用 Table Api 或 SQL,則可以使用 Calcite 的 SQL 優(yōu)化器,更容易寫出執(zhí)行效率高的應(yīng)用。

二、Table Api / SQL 是如何轉(zhuǎn)換為程序運行的?

如下圖所示

SQL 執(zhí)行被分成兩個大的階段,從 SQL 語句到 Operation,從 Operation 到 Transformation,然后就進入分布式執(zhí)行的階段。

1. 前置知識:Apache Calcite

Apache Calcite 是個動態(tài)數(shù)據(jù)管理框架,具備很多數(shù)據(jù)庫管理系統(tǒng)的功能,如 SQL 解析,SQL 校驗,SQL 查詢優(yōu)化,SQL 生成以及數(shù)據(jù)連接查詢等,但是并不存儲元數(shù)據(jù)和基本數(shù)據(jù),不包含處理數(shù)據(jù)的算法。

由于舍棄了這些功能,Calcite 可以在應(yīng)用和數(shù)據(jù)存儲,數(shù)據(jù)處理引擎之間很好的扮演中介的角色。

它不受上層編程語言的限制,前端可以使用 SQL、Pig、Cascading 等語言,只要通過 Calcite 提供的 SQL Api 將它們轉(zhuǎn)化成關(guān)系代數(shù)的抽象語法樹即可,并根據(jù)一定的規(guī)則和成本對抽象語法樹進行優(yōu)化,最后推給各個數(shù)據(jù)處理引擎來執(zhí)行。

所以 Calcite 不涉及物理規(guī)劃層,它通過擴展適配器來連接多種后端的數(shù)據(jù)源和數(shù)據(jù)處理引擎,如 Hive,Drill,F(xiàn)link,Phoenix。

2. SQL 語句到 Operation 過程

首先使用 Calcite 對 SQL 語句進行解析,獲取 SQL Node,再根據(jù)不同的 SQL 類型分別進行轉(zhuǎn)換,校驗語法的合法性,再根據(jù)語句類型(DQL、DML、DDL)轉(zhuǎn)換成對應(yīng)的算子樹。

對于 SQL 查詢語句而言,會轉(zhuǎn)換為 QueryOperation 樹。

3. Operation 到 Transformation 過程

首先 Operation 先轉(zhuǎn)換為 Calcite 的邏輯計劃樹,再對應(yīng)地轉(zhuǎn)換為 Flink 的邏輯計劃樹,然后進行優(yōu)化。

優(yōu)化后的邏輯樹轉(zhuǎn)換為 Flink 的物理計劃,然后物理計劃通過代碼生成算子、UDF、表達式等代碼,包裝到 Transformation 中,形成 Transformation 流水線,再轉(zhuǎn)換為 StreamGraph ,最終就可以提交到 Flink 集群真正運行起來了。

(后面會專門寫源碼分析的文章,來重點講述這兩部分的內(nèi)容,持續(xù)關(guān)注我)

4. 元數(shù)據(jù)

元數(shù)據(jù)是是 Flink SQL 處理數(shù)據(jù)非常重要的一個部分,元數(shù)據(jù)描述了 Flink 處理的讀取和寫出的數(shù)據(jù)的結(jié)構(gòu)以及數(shù)據(jù)的訪問方法等信息,沒有元數(shù)據(jù),F(xiàn)link 就無法對 SQL 進行校驗和優(yōu)化了。

元數(shù)據(jù)包含以下信息:

  • 視圖
  • UDF
  • 表字段

如上圖所示,在 Flink 中,Catalog 是元數(shù)據(jù)的核心抽象,目前 Flink 實現(xiàn)了內(nèi)存小 GenericMemoryCatalog 和 HiveCatalog 兩種 Catalog。

5. 優(yōu)化器

SQL 查詢優(yōu)化是來自數(shù)據(jù)庫系統(tǒng)的概念,查詢優(yōu)化器是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的核心之一,決定對特定的查詢使用哪些索引、哪些關(guān)聯(lián)算法,從而使 SQL 高效運行。

SQL 優(yōu)化器很大程度上決定了一個系統(tǒng)的執(zhí)行性能。

查詢優(yōu)化器分成兩類,基于規(guī)則的優(yōu)化器(Rule-Based Optimizer,RBO)和基于代價的優(yōu)化器(Cost-Based Optimizer,CBO)。

RBO 規(guī)則優(yōu)化,主要就是等價改變查詢語句的形式,以便產(chǎn)生更好的邏輯執(zhí)行計劃,比如重寫用戶的查詢(謂詞推進,物化視圖重寫,視圖合并等),然后還需要將邏輯執(zhí)行計劃變成物理執(zhí)行計劃。

CBO 代價優(yōu)化,除了做上述 RBO 的規(guī)則優(yōu)化外,還會通過復(fù)雜的算法統(tǒng)計信息,統(tǒng)計各個執(zhí)行計劃的執(zhí)行成本,從不同的執(zhí)行計劃中選擇出執(zhí)行代價最小的一個計劃,轉(zhuǎn)換為 Flink 的執(zhí)行計劃。

三、總結(jié)

Flink Table Api / SQL 提供了對用戶友好的接口來更高效的完成實時流式程序的開發(fā)。

Flink 依托 Apache Calcite 提供的 SQL 解析、優(yōu)化框架,解析構(gòu)建為邏輯計劃樹,通過 Planner 層層優(yōu)化為 Flink 可以運行的內(nèi)部結(jié)構(gòu),最終提交到 Flink 集群上運行。

 

責(zé)任編輯:武曉燕 來源: KK架構(gòu)師
相關(guān)推薦

2021-02-27 21:45:22

程序代碼函數(shù)

2025-11-25 08:40:48

2019-01-03 10:17:53

Apache FlinTable API代碼

2024-06-06 08:58:08

大數(shù)據(jù)SQLAPI

2020-12-18 05:53:57

SQL

2019-12-05 15:30:21

HTMLCSSJavaScript

2018-05-15 10:34:50

JavaScript語言互聯(lián)網(wǎng)

2021-09-01 09:54:10

IP地址域名

2013-04-26 13:50:46

程序員

2021-12-17 07:54:16

Flink SQLTable DataStream

2012-07-25 09:15:16

盜版者客戶

2024-01-29 08:07:42

FlinkYARN架構(gòu)

2024-11-14 08:08:14

2011-11-25 14:19:49

dllexe木馬

2009-09-16 09:56:42

LINQ to SQL

2019-08-19 08:01:50

Flink數(shù)據(jù)管理內(nèi)存

2019-12-19 14:38:08

Flink SQL數(shù)據(jù)流Join

2024-09-30 10:09:52

2009-12-21 09:40:47

微軟云計算

2020-01-13 14:39:06

FlinkSQL無限流
點贊
收藏

51CTO技術(shù)棧公眾號

欧美性suv| 日本免费一区二区六区| 奇米影视一区二区三区| 1769国产精品| 玛雅亚洲电影| 欧美一区二区二区| 国家队第一季免费高清在线观看| 久久久亚洲欧洲日产国码αv| 亚洲自拍的二区三区| 国内精品久久久久久久97牛牛 | 狠狠色狠狠色综合日日小说| 天天操天天爱天天爽| 99久久伊人网影院| 欧美中文字幕在线观看视频| 国产综合色在线视频区| 亚洲春色在线视频| 毛片一区二区三区| 亚洲午夜在线观看| 久久99精品一区二区三区| 亚洲精品中文字幕在线| 麻豆91小视频| 国产freexxxx性播放麻豆| 国产成人精品影视| 我的公把我弄高潮了视频| 99热这里都是精品| 日韩大片一区二区| 亚洲美女屁股眼交3| 丝袜美女写真福利视频| 天天操天天色综合| 免费在线观看av网站| 欧美一区二区女人| 亚洲精品国产精品国产| www.亚洲成人| 亚洲人成网www| 91久久久久久久久久久| 国产精品v欧美精品v日本精品动漫| 亚洲综合大片69999| 亚洲一区二区三区四区五区午夜| 亚洲午夜精品久久久中文影院av| eeuss影院一区二区三区| 黄p免费网站| 精品视频一区 二区 三区| h片在线观看视频免费| 欧美成人四级hd版| 国产精品videosex性欧美| 九色91在线视频| 成人午夜精品在线| 黄网站免费入口| 色天天综合久久久久综合片| 污网站在线免费看| 日韩网站在线观看| 精品国产一区二区三区不卡蜜臂| 青青a在线精品免费观看| 极品少妇一区二区三区| 99精品视频网站| 国产精品电影一区二区| 北岛玲日韩精品一区二区三区| 亚洲第一页在线| 久久久久观看| 九九九九九九精品| 国产无遮挡一区二区三区毛片日本| 在线观看国产视频| 亚洲欧美日韩久久久久久| 女人av一区| 男女啪啪的视频| 亚洲精品成人悠悠色影视| 1stkiss在线漫画| 欧美激情日韩图片| 美女精品在线| 尤物国产在线观看| 91天堂素人约啪| 超碰国产在线| 日韩精品中文字| aⅴ在线视频男人的天堂 | 一本色道久久综合亚洲aⅴ蜜桃| 在线播放网站| 亚洲国产精品女人久久久| 岛国成人av| 欧美日韩免费观看一区| 国产精品免费观看视频| 1区2区3区在线视频| 7777精品久久久久久| 日本成人在线不卡视频| 国产二级片在线| 亚洲丁香婷深爱综合| 免费欧美一区| 在线观看17c| 国产在线青青草| 精品69视频一区二区三区Q| 天堂8在线天堂资源bt| 色综合久久88色综合天天6| 四虎永久精品在线| 欧美日韩在线观看一区| 亚洲精品免费电影| 欧美黑粗硬大| 午夜欧美性电影| 欧美性黄网官网| 动漫av一区| 91蜜桃免费观看视频| 色三级在线观看| 欧美在线不卡区| 处破女av一区二区| 性欧美1819sex性高清大胸| 国产精品美女主播在线观看纯欲| 91首页免费视频| 亚洲一区二区电影| 亚洲情综合五月天| 亚洲先锋成人| 另类小说综合网| 亚洲综合色自拍一区| 99亚洲伊人久久精品影院| 国产精品嫩草在线观看| 亚洲欧美日韩国产中文在线| 色999久久久精品人人澡69 | 色婷婷综合久久久中文一区二区 | 伊人久久婷婷| 国产女王在线**视频| 欧美日韩福利视频| 成人黄色小视频在线观看| 欧美hdxxxx| 久久精品日产第一区二区三区精品版| 亚洲一线二线三线视频| 秋霞在线一区| 亚洲天堂网一区| 欧美国产中文字幕| 久久美女艺术照精彩视频福利播放| 亚洲最新无码中文字幕久久| 色噜噜一区二区| 欧美大片在线观看| 久久久www| √天堂8在线网| 欧美日韩另类综合| 777亚洲妇女| 在线播放日韩精品| 国产精品2024| 高清一区二区中文字幕| 97在线观视频免费观看| 久久视频中文字幕| 99精品国产99久久久久久白柏| 亚洲欧美精品在线| 麻豆精品在线播放| 中文字幕乱码在线播放| 中国一级黄色录像| 色偷偷偷综合中文字幕;dd| 成人一区在线观看| 精品伊人久久| 超碰在线97免费| 国产精品1234| 色妹子一区二区| 香蕉亚洲视频| 乡村艳史在线观看| 噜噜噜久久亚洲精品国产品麻豆| 色吧影院999| 国产精品看片你懂得| 欧美丝袜一区| 成人在线观看网站| 免费看啪啪网站| 久久九九精品99国产精品| 中文字幕在线不卡视频| 欧美疯狂party性派对| 成人影欧美片| 毛片在线视频播放| 国产国语videosex另类| 免费高清视频在线一区| 99精品免费在线观看| 热久久美女精品天天吊色| 欧美性xxxxx极品娇小| 久久激情一区| 日韩一级视频| 蜜芽视频在线观看| 视频三区二区一区| 欧美激情喷水视频| 精品久久久久久久久中文字幕| 免费亚洲网站| 国产精品一区二区精品视频观看| 日本视频三区| 天堂精品视频| 亚州成人av在线| 欧美人与禽zozo性伦| 成人a免费在线看| 日韩中文在线电影| av第一福利在线导航| av在线无限看| 国产精品麻豆免费版| 亚洲男人天堂2023| 亚洲综合一区二区精品导航| 午夜在线视频观看日韩17c| 欧美经典一区| 国产三区在线观看| 成人免费看黄网址| 日本一区二区三区视频在线播放| 欧美多人爱爱视频网站| 91成人网在线| 国产欧美视频一区二区三区| 亚洲手机在线| 久久99国产精品久久99大师| 超碰在线caoporn| 免费av手机在线观看| 国产精品美女诱惑| 久久久久久噜噜噜久久久精品|