本篇內(nèi)容介紹了“Flink中TableAPI&SQL怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
站在用戶的角度思考問題,與客戶深入溝通,找到大竹網(wǎng)站設計與大竹網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務覆蓋大竹地區(qū)。
Flink中的API
Flink 為流式/批式處理應用程序的開發(fā)提供了不同級別的抽象。

Flink API 最底層的抽象為有狀態(tài)實時流處理。其抽象實現(xiàn)是 Process Function,并且 Process Function 被 Flink 框架集成到了 DataStream API 中來為我們使用。它允許用戶在應用程序中自由地處理來自單流或多流的事件(數(shù)據(jù)),并提供具有全局一致性和容錯保障的狀態(tài)。此外,用戶可以在此層抽象中注冊事件時間(event time)和處理時間(processing time)回調(diào)方法,從而允許程序可以實現(xiàn)復雜計算。
Flink API 第二層抽象是 Core APIs。實際上,許多應用程序不需要使用到上述最底層抽象的 API,而是可以使用 Core APIs 進行編程:其中包含 DataStream API(應用于有界/無界數(shù)據(jù)流場景)和 DataSet API(應用于有界數(shù)據(jù)集場景)兩部分。Core APIs 提供的流式 API(Fluent API)為數(shù)據(jù)處理提供了通用的模塊組件,例如各種形式的用戶自定義轉(zhuǎn)換(transformations)、聯(lián)接(joins)、聚合(aggregations)、窗口(windows)和狀態(tài)(state)操作等。此層 API 中處理的數(shù)據(jù)類型在每種編程語言中都有其對應的類。
Process Function 這類底層抽象和 DataStream API 的相互集成使得用戶可以選擇使用更底層的抽象 API 來實現(xiàn)自己的需求。DataSet API 還額外提供了一些原語,比如循環(huán)/迭代(loop/iteration)操作。
Flink API 第三層抽象是 Table API。Table API 是以表(Table)為中心的聲明式編程(DSL)API,例如在流式數(shù)據(jù)場景下,它可以表示一張正在動態(tài)改變的表。Table API 遵循(擴展)關系模型:即表擁有 schema(類似于關系型數(shù)據(jù)庫中的 schema),并且 Table API 也提供了類似于關系模型中的操作,比如 select、project、join、group-by 和 aggregate 等。Table API 程序是以聲明的方式定義應執(zhí)行的邏輯操作,而不是確切地指定程序應該執(zhí)行的代碼。盡管 Table API 使用起來很簡潔并且可以由各種類型的用戶自定義函數(shù)擴展功能,但還是比 Core API 的表達能力差。此外,Table API 程序在執(zhí)行之前還會使用優(yōu)化器中的優(yōu)化規(guī)則對用戶編寫的表達式進行優(yōu)化。
表和 DataStream/DataSet 可以進行無縫切換,F(xiàn)link 允許用戶在編寫應用程序時將 Table API 與 DataStream/DataSet API 混合使用。
Flink API 最頂層抽象是 SQL。這層抽象在語義和程序表達式上都類似于 Table API,但是其程序?qū)崿F(xiàn)都是 SQL 查詢表達式。SQL 抽象與 Table API 抽象之間的關聯(lián)是非常緊密的,并且 SQL 查詢語句可以在 Table API 中定義的表上執(zhí)行。
Table API 和 SQL
Apache Flink 有兩種關系型 API 來做流批統(tǒng)一處理:Table API 和 SQL。
Table API 是用于 Scala 和 Java 語言的查詢API,它可以用一種非常直觀的方式來組合使用選取、過濾、join 等關系型算子。Flink SQL 是基于 Apache Calcite 來實現(xiàn)的標準 SQL。這兩種 API 中的查詢對于批(DataSet)和流(DataStream)的輸入有相同的語義,也會產(chǎn)生同樣的計算結(jié)果。
Table API 和 SQL 兩種 API 是緊密集成的,以及 DataStream 和 DataSet API。你可以在這些 API 之間,以及一些基于這些 API 的庫之間輕松的切換。比如,你可以先用 CEP 從 DataStream 中做模式匹配,然后用 Table API 來分析匹配的結(jié)果;或者你可以用 SQL 來掃描、過濾、聚合一個批式的表,然后再跑一個 Gelly 圖算法 來處理已經(jīng)預處理好的數(shù)據(jù)。
注意:Table API 和 SQL 現(xiàn)在還處于活躍開發(fā)階段,還沒有完全實現(xiàn)所有的特性。不是所有的 [Table API,SQL] 和 [流,批] 的組合都是支持的。
官方文檔
https://ci.apache.org/projects/flink/flink-docs-release-1.11/zh/dev/table/
TableAPI&SQL開發(fā)
增加TableAPI&SQL演示內(nèi)容,在原有的工程基礎上,擴展一個tableapi模塊;此模塊會演示以下幾個組件的TableApi與SQL簡單使用
elasticsearch
kafka
jdbc (MySQL)
新增tableapi模塊
在當前工程中,創(chuàng)建名稱為tableapi的maven工程模塊
pom.xml
<artifactId>tableapi</artifactId>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-connector-jdbc -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-jdbc_2.12</artifactId>
<version>1.11.1</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-common</artifactId>
<version>1.11.1</version>
<!--<scope>provided</scope>-->
</dependency>
<!-- flink-connector-kafka -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka_2.11</artifactId>
<version>1.11.1</version>
</dependency>
<!-- mysql驅(qū)動包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- elasticsearch7依賴 -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-elasticsearch7_2.11</artifactId>
<version>${flink.version}</version>
</dependency>
<!--<dependency>-->
<!--<groupId>org.apache.flink</groupId>-->
<!--<artifactId>flink-sql-connector-elasticsearch7_2.11</artifactId>-->
<!--<version>${flink.version}</version>-->
<!--</dependency>-->
</dependencies>刷新工程maven,下載相關功能依賴組件包;
工程模塊

“Flink中TableAPI&SQL怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
標題名稱:Flink中TableAPI&SQL怎么使用
當前網(wǎng)址:http://www.chinadenli.net/article36/piehpg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、云服務器、網(wǎng)站建設、自適應網(wǎng)站、企業(yè)建站、網(wǎng)站導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)