精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

十分鐘了解Flink SQL使用

大數據
本文將介紹Flink SQL的基本原理、使用方法、流批統一,并通過幾個例子進行實踐。

Flink 是一個流處理和批處理統一的大數據框架,專門為高吞吐量和低延遲而設計。開發者可以使用SQL進行流批統一處理,大大簡化了數據處理的復雜性。本文將介紹Flink SQL的基本原理、使用方法、流批統一,并通過幾個例子進行實踐。

一、Flink SQL基本原理

Flink SQL建立在Apache Flink之上,利用Flink的強大處理能力,使得用戶可以使用SQL語句進行流數據和批數據處理。Flink SQL既支持實時的流數據處理,也支持有界的批數據處理。

Flink SQL用SQL作為處理數據的接口語言,將SQL語句轉換成數據流圖(Dataflow Graph),再由Flink引擎執行。

二、Flink SQL固定編碼套路

使用Flink SQL時,我們通常會遵循如下編碼套路,這些套路和使用Flink API的套路是一樣的:

  • 環境準備:初始化一個TableEnvironment對象,它是執行Flink SQL語句的核心。這個環境可以是流數據環境,也可以是批數據環境。
  • 數據源定義:通過CREATE TABLE語句定義輸入數據源(source),可以是Kafka、CSV文件等。
  • 數據處理:編寫SQL語句對數據進行處理,如查詢、過濾、聚合等。
  • 數據輸出:通過CREATE TABLE定義輸出數據源(sink),并將處理結果輸出。

三、Flink SQL代碼示例

以下是一個從CSV文件讀取數據,通過SQL查詢,再將數據輸出到CSV的完整例子。

(1) 先準備input.csv文件內容,如下:

1,product_A,10.5
2,product_B,20.3
3,product_C,15.8
1,product_D,12.2
2,product_A,18.7

(2) 編寫demo代碼

編寫代碼之前先在pom.xml中添加依賴:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-csv</artifactId>
    <version>${flink.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-json</artifactId>
    <version>${flink.version}</version>
</dependency>

示例代碼如下:

import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;

public class FlinkSqlDemo {
    public static void main(String[] args) throws Exception {
        // 設置環境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1); //為了方便測試看效果,這里并行度設置為1
        // 使用EnvironmentSettings創建StreamTableEnvironment,明確設置為批處理模式
        EnvironmentSettings settings = EnvironmentSettings
                .newInstance()
                .inBatchMode() // 設置為批處理模式,這樣后續才能一次性的輸出到csv中
                .build();
        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, settings);

        // 定義輸入數據源
        String createSourceTableDdl = "CREATE TABLE csv_source (" +
                " user_id INT," +
                " product STRING," +
                " order_amount DOUBLE" +
                ") WITH (" +
                " 'connector' = 'filesystem'," +
                " 'path' = 'file:///path/input.csv'," +
                " 'format' = 'csv'" +
                ")";
        tableEnv.executeSql(createSourceTableDdl);

//        // 編寫 SQL 查詢
//        String query = "SELECT user_id, SUM(order_amount) AS total_amount FROM csv_source GROUP BY user_id";
//        // 執行查詢并打印
//        tableEnv.executeSql(query).print();
//        env.execute("Flink SQL Demo");

        // 定義輸出數據源
        String createSinkTableDdl = "CREATE TABLE csv_sink (" +
                " user_id INT," +
                " total_amount DOUBLE" +
                ") WITH (" +
                " 'connector' = 'filesystem'," +
                " 'path' = 'file:///path/output.csv'," +
                " 'format' = 'csv'" +
                ")";
        tableEnv.executeSql(createSinkTableDdl);

        // 執行查詢并將結果輸出到csv_sink
        String query = "INSERT INTO csv_sink " +
                "SELECT user_id, SUM(order_amount) as total_amount " +
                "FROM csv_source " +
                "GROUP BY user_id";
        tableEnv.executeSql(query);
//        env.execute("Flink SQL Job");
    }
}

(3) 執行結果如下:

四、Flink SQL做流批統一

1.什么是流批統一?

流批統一是大數據處理領域的一個概念,它指的是使用一套代碼來同時處理流數據(Streaming)和批數據(Batching)。

流處理和批處理的區別如下:

(1) 批處理(Batch Processing):

  • 批處理是指在某一時間點處理大量數據的手段。
  • 它通常涉及到對大量靜止的(不再變化的)數據集進行一次性的處理。
  • 批處理作業通常在數據集完整可用后開始執行,并且經常是在數據倉庫中進行。
  • 例如,一個電商平臺可能在一天結束時運行一個批處理作業來處理當天所有的交易記錄。

(2) 流處理(Stream Processing):

  • 流處理是指對數據實時進行處理,通常是數據生成或接收的同時立即進行。
  • 流處理適用于連續的數據輸入,這些數據一直在變化,需要立即響應。
  • 例如,社交媒體平臺在接收到新的帖子時,可能會實時分析這些帖子的內容和流行趨勢。

在早期,流處理和批處理通常需要不同的系統來執行。對于批處理,可能使用如Hadoop這樣的框架;而對于流處理,可能使用如Apache Storm這樣的框架。這就導致開發者要同時學習多種框架才能處理不同類型的數據作業。

流批統一的概念,就是將這兩種數據處理方式合并到一個平臺中,這樣一個系統既可以處理靜止的大批量數據集,也可以處理實時的數據流。這樣做的優點是顯而易見的:

  • 統一的API:開發人員只需要學習和使用一套工具和API,可以共享更多的代碼和邏輯。
  • 維護簡便:只需維護一個系統,可以減少學習成本,減輕運維壓力,減少故障點。
  • 靈活的數據處理:可以根據不同的業務需求靈活選擇數據處理方式。

2.Flink SQL流批一體的實現原理

Flink很好的實現了流批統一,可以讓開發人員用相同的方式來編寫批處理和流處理程序。不論是對有界(批處理)還是無界(流處理)的數據源,Flink都可以使用相同的API和處理邏輯來處理數據。

Flink 通過內置的表抽象來實現流批一體,這里的"表"可以是動態變化的(例如,來自實時數據流的表)或是靜態的(例如,存儲在文件或數據庫中的批量數據表)。Flink SQL引擎會根據數據的實際來源自動優化執行計劃。

Flink SQL的流批統一核心在于三點:

  • 統一的API和SQL語義:Flink SQL提供一致的查詢構建塊(如窗口、時間處理函數),這些在流處理和批處理中語義一致,確保不同模式下行為的統一性。
  • 透明的狀態處理:無論是流處理還是批處理,Flink都能夠保持和恢復狀態,為開發者提供一致的高容錯性體驗。
  • 多模態存儲和處理能力:Flink SQL能夠訪問不同存儲介質的數據,這意味著相同的SQL語句可以無縫在流數據和存儲的批量數據上執行。

3.Flink SQL流批統一的代碼示例

以下是一個完整的代碼示例,用Flink來實現流批統一處理。Flink同時從Kafka 和 CSV讀取數據,然后合并查詢再輸出結果:

(1) 代碼示例

代碼中,先配置了Flink的流處理環境和表環境,然后用DDL語句在Flink中注冊了Kafka和文件系統數據源。接著執行了一個SQL查詢來合并來自這兩種數據源的數據,并計算總金額。最后,打印出查詢結果并開始執行Flink作業。


import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
import org.apache.flink.types.Row;

public class StreamBatchUnifiedDemo {
    public static void main(String[] args) throws Exception {
        // 設置流處理的環境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        EnvironmentSettings settings = EnvironmentSettings.newInstance()
                .inStreamingMode()
                .build();
        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, settings);

        // Kafka 流處理表
        String createKafkaSourceDDL = "CREATE TABLE kafka_stream_orders (" +
                "order_id STRING," +
                "amount DOUBLE)" +
                "WITH (" +
                "'connector' = 'kafka'," +
                "'topic' = 'topic_test'," +
                "'properties.bootstrap.servers' = '10.20.1.26:9092'," +
                "'format' = 'json'," +
                "'scan.startup.mode' = 'latest-offset'" +
                ")";
        tableEnv.executeSql(createKafkaSourceDDL);

        // 文件系統批處理表
        String createFilesystemSourceDDL = "CREATE TABLE file_batch_orders (" +
                "order_id STRING," +
                "amount DOUBLE)" +
                "WITH (" +
                "'connector' = 'filesystem'," +
                "'path' = 'file:///Users/yclxiao/Project/bigdata/flink-blog/doc/input_order.csv'," +
                "'format' = 'csv'" +
                ")";
        tableEnv.executeSql(createFilesystemSourceDDL);

        // 執行統一查詢,計算總金額
        Table resultTable = tableEnv.sqlQuery("SELECT SUM(amount) FROM (" +
                "SELECT amount FROM kafka_stream_orders " +
                "UNION ALL " +
                "SELECT amount FROM file_batch_orders)");

        // 打印結果
        tableEnv.toRetractStream(resultTable, Row.class).print();

        // 開始執行程序
        env.execute("Stream-Batch Unified Job");
    }
}

(2) 執行效果

通過以上示例代碼,可以看出Flink SQL的流批一體設計:相同的SQL語句可以用在流處理和批處理中,而不需要做任何修改。Flink背后的執行引擎會自動根據數據的特性(流或者批)來進行相應的優化執行。

這就是Flink SQL非常強大的地方,它減少了開發者需要寫不同代碼邏輯的需求,簡化了復雜的數據處理流程。

五、總結

Flink SQL是一個非常強大的數據處理工具,可以應對多種復雜的數據處理場景。

本文主要介紹了Flink SQL的基本原理、編碼套路、流批統一,再結合正確的代碼示例進行實踐。希望對你有幫助。

完整代碼地址:https://github.com/yclxiao/flink-blog

責任編輯:趙寧寧 來源: 不焦躁程序員
相關推薦

2020-12-17 06:48:21

SQLkafkaMySQL

2024-06-19 09:58:29

2023-07-15 18:26:51

LinuxABI

2024-11-07 16:09:53

2015-11-06 11:03:36

2021-07-29 08:57:23

ViteReact模塊

2024-10-08 11:12:12

2009-11-03 11:01:45

VB.NET遠程事件

2024-12-13 15:29:57

SpringSpringBeanJava

2025-03-18 12:20:00

編程

2019-04-01 14:59:56

負載均衡服務器網絡

2009-10-09 14:45:29

VB程序

2024-10-06 12:50:25

2020-12-09 16:41:22

LinuxIT開發

2021-09-07 09:40:20

Spark大數據引擎

2022-06-16 07:31:41

Web組件封裝HTML 標簽

2023-04-12 11:18:51

甘特圖前端

2012-07-10 01:22:32

PythonPython教程

2023-11-30 10:21:48

虛擬列表虛擬列表工具庫

2015-09-06 09:22:24

框架搭建快速高效app
點贊
收藏

51CTO技術棧公眾號

操91在线视频| 一区二区三区在线免费视频| 国产99视频在线观看| 亚洲综合欧美综合| 57pao成人永久免费| 依依成人精品视频| 久久久久久久久四区三区| 一区二区三区麻豆| 天天射天天综合网| 亚洲国产精久久久久久久| 国语对白做受xxxxx在线中国| 成年人在线观看网站| 美国十次了思思久久精品导航| 久久久精品在线观看| 亚洲国产精品自拍视频| 日韩黄色三级| 懂色av一区二区三区| 欧美亚洲爱爱另类综合| 国产高清在线观看视频| 首页亚洲欧美制服丝腿| 超在线视频97| 成人写真福利网| 日本高清一区| www日本高清| 久久中文字幕一区二区三区| 久久99视频免费| jizz中文字幕| 精品国产影院| 欧美一区二区三区四区高清| 久久精品99国产| 国产精品69xx| 亚洲欧洲三级电影| 日韩中文字幕一区| 亚洲AV无码一区二区三区性| 美女一区二区三区| 日本a级片电影一区二区| 538任你躁在线精品视频网站| 久久av综合| 亚洲国产女人aaa毛片在线| 精品久久久噜噜噜噜久久图片 | 中日韩一级黄色片| 中文字幕中文字幕精品| 精品1区2区在线观看| 极品粉嫩美女露脸啪啪| av亚洲一区二区三区| 欧美日韩在线视频首页| 欧美视频在线观看视频| 在线播放免费av| ...xxx性欧美| 青少年xxxxx性开放hg| youjizz在线播放| 国产午夜精品久久久久久免费视| 久久偷窥视频| 欧美在线观看在线观看| 2023国产精品视频| 精品国产_亚洲人成在线| 亚洲AV无码国产精品午夜字幕| 极品少妇xxxx偷拍精品少妇| 国产精品日日摸夜夜添夜夜av| 精产国品一区二区| 久久久亚洲一区| 日韩av毛片网| 精品国产www| 捆绑调教美女网站视频一区| 国产精品视频地址| 国产精品国产一区二区三区四区 | 国产精彩精品视频| 波多野结衣电车痴汉| 青青草一区二区三区| 国产精品久久久久秋霞鲁丝 | 精品在线播放| 亚洲精品动漫100p| 久久亚洲AV成人无码国产野外| 日韩精品免费一区二区三区竹菊 | 久久久久久久久久久妇女| 俺也去精品视频在线观看| 欧美激情精品久久久久久免费 | 久久精品免视看国产成人| 在线观看91av| 人妻换人妻a片爽麻豆| 秋霞影院一区二区三区| 亚洲视频一区二区| 亚洲欧美卡通动漫| 国产精品啊啊啊| 欧美一级高清免费| 在线观看毛片网站| 国产一区二区精品在线观看| 国产精品国产精品国产专区蜜臀ah| 黄色av中文字幕| 久久久欧美精品sm网站| 亚洲春色在线视频| 1区2区在线观看| 天天操天天干天天综合网| 日韩中文字幕二区| 亚洲一区导航| 亚洲黄色片网站| 国产成人一区二区在线观看| 亚洲综合小说| 51色欧美片视频在线观看| 老熟妇一区二区三区啪啪| 国产老妇另类xxxxx| 精品久久久三级| 免费a级人成a大片在线观看| 一区二区三区四区高清精品免费观看 | 蜜桃91麻豆精品一二三区| wwww国产精品欧美| 992tv成人免费观看| 伊人久久在线| 日韩三级电影网址| www..com.cn蕾丝视频在线观看免费版 | 欧美mv和日韩mv的网站| 一区二区黄色片| 你懂的国产精品永久在线| 欧洲亚洲在线视频| www.国产三级| 国产精品国产三级国产普通话三级| 国产精品视频一二三四区| 深夜视频一区二区| 亚洲高清色综合| 国产精品精品软件男同| 亚洲在线国产日韩欧美| 亚洲自拍中文字幕| av在线资源站| 日韩欧美有码在线| 亚洲av成人片无码| 正在播放日韩欧美一页 | 国语对白做受69按摩| 成人三级在线视频| 色香蕉在线观看| 色婷婷综合久久久中字幕精品久久 | 亚洲色欲综合一区二区三区| 涩爱av色老久久精品偷偷鲁| 中文字幕一区二区三区电影| 国产又粗又爽视频| 成人黄页毛片网站| 国产片侵犯亲女视频播放| 亚洲国产伊人| 色吧影院999| 久久这里只有精品9| 99re热视频这里只精品| 2019日韩中文字幕mv| 国产999精品在线观看| 自拍视频国产精品| 中文字幕在线网站| 国产欧美日韩在线观看| 国产美女三级视频| 亚洲免费成人av在线| 91av在线播放视频| 十八禁一区二区三区| 亚洲成人激情综合网| 欧美性爽视频| 免费精品国产的网站免费观看| 久久综合伊人77777蜜臀| 中国精品一区二区| 亚洲国产精品传媒在线观看| 国产精品极品美女在线观看免费| 亚洲香蕉伊综合在人在线视看| 热久久久久久久久| 91综合在线| 国产精品精品一区二区三区午夜版 | 成人福利在线观看视频| 欧美丰满一区二区免费视频| 蜜桃视频最新网址| 国内精品视频666| 日韩国产精品毛片| 一区二区三区四区精品视频| 欧美日韩国产成人在线| 亚洲爱爱综合网| 亚洲图片自拍偷拍| 粉嫩av懂色av蜜臀av分享| 国产精品呻吟| 日本一区二区免费看| 777午夜精品电影免费看| 日韩综合视频在线观看| 99久久久国产精品无码网爆| 亚洲欧美视频在线观看| 成人区人妻精品一区二| 亚欧美中日韩视频| 亚洲精品国产精品国自产| а天堂中文最新一区二区三区| 欧美成人免费大片| 亚洲人在线观看视频| 日本乱人伦一区| 性生交大片免费全黄| 岛国一区二区在线观看| 国产精品欧美激情在线观看 | 日韩视频在线免费播放| 视频精品二区| 日本久久精品视频| 欧美被日视频| 亚洲成成品网站| 国产又粗又猛又爽又| 亚洲视频在线一区观看| a天堂视频在线观看| 免费在线观看精品| 18禁裸男晨勃露j毛免费观看| 美女毛片一区二区三区四区最新中文字幕亚洲 | 精品国产污网站| 无码人妻丰满熟妇区bbbbxxxx | 亚洲欧美综合一区| 爱高潮www亚洲精品| 国产精品成人一区二区三区吃奶| 91麻豆一二三四在线| 亚洲片av在线| 亚洲大尺度网站| 欧美视频一区二区| 日本少妇在线观看| 中文字幕一区二区三区在线观看 | 国产精品素人视频| 香蕉视频污视频| 精品亚洲aⅴ乱码一区二区三区| 欧美在线一区视频| 亚洲天堂免费| 亚洲国产日韩欧美| 日本韩国欧美超级黄在线观看| 91理论片午午论夜理片久久| 91av亚洲| 久久久久中文字幕| 国产精品刘玥久久一区| 亚洲性夜色噜噜噜7777| 日韩在线观看视频一区| 欧美一区二区精美| 中文字幕在线播放av| 精品女同一区二区三区在线播放| 日本黄色片免费观看| 久久精品夜色噜噜亚洲a∨| 国产综合内射日韩久| 狠狠色2019综合网| 国产精品久久久毛片| 国产视频一区欧美| 婷婷五月综合缴情在线视频| 国产精品地址| 精品91一区二区三区| 日韩精品午夜| 日韩中文字幕一区| 国产调教一区二区三区| 精品视频导航| 欧美激情极品| 国产日本一区二区三区| 中文一区二区三区四区| 91在线视频精品| 色成人综合网| 成人国产精品一区| 91成人福利社区| 国产欧美一区二区三区在线 | 99在线|亚洲一区二区| 欧美极品少妇无套实战| 欧美久久视频| 丁香色欲久久久久久综合网| 中出一区二区| 国产成人在线小视频| 国产精品分类| 特大黑人娇小亚洲女mp4| 欧美二区视频| 成年人看的毛片| 在线欧美亚洲| 欧美日韩国产精品激情在线播放| 国产欧美二区| 男人天堂999| 爽爽淫人综合网网站| 午夜国产一区二区三区| 久久 天天综合| 黄色片免费网址| 国产91精品在线观看| 亚洲精品无码一区二区| 99久久久国产精品| 大又大又粗又硬又爽少妇毛片| 国产色综合网| 九色精品美女在线| 在线看av的网址| 久久久国产在线视频| 99自拍视频在线观看| 欧美激情精品久久久久久久变态| av美女在线观看| 欧美做爰性生交视频| 先锋欧美三级| 91九色单男在线观看| 亚洲码欧美码一区二区三区| 精品乱码一区| 成人久久综合| 视色,视色影院,视色影库,视色网| 黄色欧美日韩| 无码人妻丰满熟妇区毛片| 麻豆中文一区二区| 成人啪啪18免费游戏链接| 91丝袜国产在线播放| 国产精品成人无码免费| 亚洲激情第一区| 美女又爽又黄免费视频| 欧美日韩亚州综合| 刘玥91精选国产在线观看| 揄拍成人国产精品视频| 天天色天天射天天综合网| 欧美一区二区色| av在线播放一区二区| 久久99欧美| 亚洲成人二区| 国产精品wwwww| 国产米奇在线777精品观看| 搡老熟女老女人一区二区| 亚洲欧美一区二区在线观看| 日韩欧美激情视频| 在线播放中文字幕一区| 视频午夜在线| 国产精品水嫩水嫩| 免费麻豆国产一区二区三区四区| 精品美女国产在线| 国产精品呻吟久久| 亚洲欧美日韩精品久久亚洲区 | 精品区在线观看| 亚洲欧美一区二区精品久久久 | 国内精品久久久久伊人av| 69堂精品视频在线播放| 精品毛片久久久久久| 亚洲成人最新网站| 99视频精品免费| 成人97人人超碰人人99| 91ts人妖另类精品系列| 欧美性精品220| 亚洲国产精品二区| 日韩中文娱乐网| 国产免费不卡| 国产一区二区三区高清视频| 亚洲国产一区二区三区在线播放| 十八禁视频网站在线观看| jiyouzz国产精品久久| 欧洲猛交xxxx乱大交3| 欧美日韩精品一区二区天天拍小说| 无码国产精品一区二区色情男同| 俺去亚洲欧洲欧美日韩| 另类中文字幕国产精品| 久久艳妇乳肉豪妇荡乳av| 亚洲第一在线| 久草免费资源站| 一区二区三区欧美视频| 亚洲 小说区 图片区| 日韩成人在线视频观看| av中文在线资源库| av免费观看久久| 欧美极品一区二区三区| 在线视频一二区| 国产精品久久久久久久岛一牛影视 | 国产日韩精品综合网站| 欧美一站二站| 国产精品拍拍拍| 国产欧美va欧美不卡在线| 欧美性猛交xxxx乱大交hd| 亚洲精品一区二区网址 | 国产精品香蕉av| 成人写真视频| www.夜夜爽| 中文字幕亚洲精品在线观看| 国产精品久久久久久免费| xx视频.9999.com| 免费看一区二区三区| 国产香蕉一区二区三区| 国产丶欧美丶日本不卡视频| 青青操视频在线播放| 精品国精品国产| free性m.freesex欧美| 久久国产欧美精品| 日韩中文字幕区一区有砖一区| 久久婷婷五月综合| 欧美日本在线视频| 羞羞视频在线观看不卡| 国产超碰91| 亚洲专区一区| 亚洲色图第四色| 日韩一区二区三区观看| 国产网红在线观看| 久久精品二区| 日本不卡一区二区三区| 成人涩涩小片视频日本| 日韩美一区二区三区| а√天堂资源官网在线资源| 欧美精品一区二区三区四区五区| 日韩电影在线观看电影| 国产精品国产三级国产传播| 日韩精品一区二区三区四区 | 欧美黄色一区二区| jizz日本免费| 欧美日韩一区二区三区高清| 在线黄色网页| 欧美激情视频一区二区三区| 美女视频免费一区| 精品无码一区二区三区电影桃花| 精品五月天久久| 只有精品亚洲| 人妻夜夜添夜夜无码av| 国产人伦精品一区二区| 99热精品在线播放| 欧美一级片一区| 99久久婷婷这里只有精品| 最新版天堂资源在线| 欧美视频三区在线播放| 国内在线免费视频| 视频一区二区三| 成人黄页毛片网站| 国产又大又粗又硬| 欧洲亚洲免费在线|