精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲色图17p| 午夜精品国产更新| 成人在线视频福利| 日本三级视频在线| 欧美日韩高清| 91精品国产91久久久久久一区二区 | 日韩中文理论片| 日本性生活一级片| 成人久久网站| 午夜久久福利影院| 亚洲最大免费| 网站黄在线观看| 国内精品久久久久影院色| 91po在线观看91精品国产性色| 一级特黄曰皮片视频| 北条麻妃在线一区二区免费播放| 91国模大尺度私拍在线视频 | 99国产精品视频免费观看一公开 | 蜜桃精品久久久久久久免费影院| 一二三区中文字幕| 奶水喷射视频一区| 欧美精品18videosex性欧美| 手机毛片在线观看| 西瓜成人精品人成网站| 欧美大片在线观看一区二区| 91热这里只有精品| 超碰超碰人人人人精品| 亚洲国产美女搞黄色| 日本黄色播放器| 电影av在线| 波多野结衣中文字幕一区| 成人免费午夜电影| 中国一级特黄视频| 久久一区二区三区超碰国产精品| 欧美激情亚洲综合一区| 少妇aaaaa| 99热精品久久| 色av吧综合网| 污污视频网站在线免费观看| 奇米狠狠一区二区三区| 日韩福利视频在线观看| 一二三区视频在线观看| 免费一级欧美在线大片| 欧美日韩国产小视频在线观看| 国产福利视频在线播放| 手机av在线| 精品日本美女福利在线观看| 日本中文字幕在线视频观看| 日本天码aⅴ片在线电影网站| 亚洲天堂网中文字| 中文字幕中文字幕一区三区| 第九色区av在线| 中文字幕av资源一区| 五月天综合网| 欧美三级电影一区二区三区| 国产精品久久久久久久久动漫| 亚洲国产一区二区三区在线 | 亚洲色图丝袜| 亚洲欧美综合区自拍另类| 国产三级视频网站| 国产成人久久| 日韩中文字幕av| 内射毛片内射国产夫妻| 久久中文视频| 久久久精品网站| 免费人成年激情视频在线观看| 欧美a级在线| 国内成人精品一区| 国产微拍精品一区| 日韩精品欧美精品| 国产中文欧美精品| 国产后入清纯学生妹| 高清视频一区二区| 久久亚裔精品欧美| aaa日本高清在线播放免费观看| 国产精品乱码一区二区三区软件| 三级网在线观看| 金瓶狂野欧美性猛交xxxx | 国产超级av在线| 青青热久免费精品视频在线18| 欧美日韩一卡二卡三卡| 亚洲精品乱码久久久久久动漫| 日韩中文字幕一区二区高清99| 日韩电影大片中文字幕| 国产第一页精品| 欧美色图首页| 国产成人高潮免费观看精品| 亚洲一区在线观| 国产精品亚洲一区二区三区妖精| 精品无人区一区二区三区| 国产视频二区在线观看| 亚洲视频免费在线观看| 日本一道本久久| 欧美成人家庭影院| 精品国产髙清在线看国产毛片 | 亚洲色图欧美偷拍| 免费看国产曰批40分钟| 亚洲无码精品国产| 国产麻豆欧美日韩一区| 韩国成人动漫在线观看| 高清在线观看av| 亚洲主播在线观看| 黄色一级免费大片| 日韩中文字幕无砖| 亚洲天堂av女优| 久久久久亚洲av无码专区| 香蕉精品999视频一区二区 | 999香蕉视频| 久久久91麻豆精品国产一区| 亚洲精选中文字幕| 青青操国产视频| 免费观看在线综合色| 国产精品久久久久久久久久久久午夜片| 国产午夜精品一区理论片| 亚洲影院久久精品| 玖玖爱视频在线| 免费电影一区二区三区| 欧美福利视频网站| 国产又粗又大又爽视频| 久久综合99re88久久爱| 国产精品久久久久久久乖乖| 欧美一级做a| 亚洲美女福利视频网站| 日本免费在线播放| 国产一区二区在线观看免费| 日韩中文字幕av在线| а√天堂中文资源在线bt| 欧美一区二区三区四区视频 | 性xxxfllreexxx少妇| 樱桃国产成人精品视频| 奇米影音第四色| 久操成人av| 91高清免费在线观看| 丰满岳乱妇国产精品一区| 自拍av一区二区三区| 午夜免费福利在线| 一区二区三区韩国免费中文网站| 久久噜噜噜精品国产亚洲综合| 99国产精品99| 日韩美女久久久| 日韩av在线中文| 日韩欧美网站| 国产精品视频自拍| 自拍视频在线免费观看| 在线观看一区二区视频| 一区二区精品免费| 日韩中文字幕麻豆| 日韩精品久久久免费观看 | 96pao国产成视频永久免费| 欧美国产视频日韩| 国产一区二区三区三州| 自拍偷拍亚洲激情| 三级黄色片播放| 欧美一区综合| 999视频在线观看| 色噜噜狠狠狠综合欧洲色8| 日韩一区二区三区电影在线观看| 精品无码久久久久成人漫画| 国产资源在线一区| 欧美日韩福利在线| 色爱综合av| 国产精品极品在线| eeuss影院www在线观看| 欧美精品色一区二区三区| 国产日产精品一区二区三区的介绍| 精品一区二区三区在线视频| 亚洲免费av网| 亚洲一区二区三区日本久久九| 欧美激情网站在线观看| 飘雪影院手机免费高清版在线观看 | 日韩网站中文字幕| 色婷婷av一区二区三区在线观看 | 自由日本语热亚洲人| 亚洲美女精品久久| 91亚洲国产成人久久精品麻豆| 亚洲三级理论片| 久久久午夜精品福利内容| 乱码第一页成人| 一区二区三区四区五区精品| 少妇精品在线| 日本欧美在线视频| 在线观看黄色av| 精品三级在线看| 中文字幕一区二区人妻视频| 中文字幕一区二区不卡| 亚洲一区二区三区四区av| 久久精品亚洲| 日日噜噜夜夜狠狠久久丁香五月| 久久中文资源| 国产精品中文久久久久久久| 中文字幕中文字幕在线十八区 | 国产在线精品一区二区不卡了| 妞干网视频在线观看| 五月激激激综合网色播| 91日本视频在线| 精品国产免费人成网站| 久久成人人人人精品欧| 青青国产在线| 欧美草草影院在线视频| 波多野结衣电车痴汉| 依依成人精品视频| 欧美精品日韩在线| 99久久精品国产精品久久| www.久久91| 性欧美暴力猛交另类hd| 99中文字幕在线观看| 九色成人国产蝌蚪91| 999国内精品视频在线| 欧美日韩国产网站| 国内精久久久久久久久久人| 国产美女在线观看| 国产亚洲视频在线| 欧美一级淫片免费视频魅影视频| 欧美视频自拍偷拍| 久草视频在线观| 一区二区三区中文在线| 99久久99久久精品免费| 91麻豆成人久久精品二区三区| 国产精品探花在线播放| 免费国产亚洲视频| 国内自拍视频一区| 99日韩精品| 男人添女荫道口喷水视频| 天天做天天爱综合| 性欧美精品一区二区三区在线播放| 欧美电影在线观看完整版| 亚洲自拍在线观看| 97色婷婷成人综合在线观看| 国产精品视频午夜| 日韩精品一区二区三区av| 日本中文字幕久久看| 水蜜桃在线视频| 欧美亚洲国产视频| 毛片在线网站| 97国产一区二区精品久久呦| 欧美14一18处毛片| 欧美大胆a视频| 91麻豆免费在线视频| 久久久国产一区| 欧洲美女少妇精品| 日韩视频在线免费| 毛片在线视频| 久久精品国产一区| 久久黄色美女电影| 久久这里只有精品视频首页| 免费a级在线播放| 久久人人爽人人爽人人片亚洲| 99se视频在线观看| 日韩在线一区二区三区免费视频| 1769视频在线播放免费观看| 日韩在线国产精品| 日韩成人影视| 久久国产精品免费视频| 午夜小视频在线观看| 久99九色视频在线观看| 丰满诱人av在线播放| 午夜精品视频网站| 精品国产免费人成网站| 国产精品嫩草影院一区二区| 青娱乐极品盛宴一区二区| 成人在线播放av| 91欧美日韩在线| 久久影院理伦片| 日韩国产一区二区| 国产免费xxx| 亚洲黄色一区| 国内自拍视频一区| 国内精品伊人久久久久影院对白| 午夜免费视频网站| 99re这里只有精品视频首页| 一级片视频免费看| 日韩美女视频一区二区 | 在线观看一区日韩| 91久久国语露脸精品国产高跟| 日韩午夜小视频| 日韩大片b站免费观看直播| 一本久久综合亚洲鲁鲁| 黄色一级片在线观看| 久久久久久久久久久91| 芒果视频成人app| 成人午夜高潮视频| 欧美人体视频| 亚洲一区二区三区四区中文| 激情综合视频| 99热这里只有精品在线播放| 国产成人av影院| 久久久久久久久久久久久久久| 自拍偷拍欧美激情| av黄色在线播放| 日韩视频一区二区在线观看| 日韩精品系列| 久久久精品在线观看| 黄在线观看免费网站ktv| 国产一区二区在线免费| 国产精品99久久免费观看| 日韩欧美在线一区二区| 欧美激情 亚洲a∨综合| 亚洲xxxx2d动漫1| 国产suv精品一区二区883| 国产jjizz一区二区三区视频| 一区二区三区国产豹纹内裤在线| 久久久久久无码午夜精品直播| 欧美一二三四区在线| 邻居大乳一区二区三区| 欧美精品激情blacked18| 欧美特黄色片| 欧美综合激情| 亚洲精品1234| 九色91porny| 国产精品欧美久久久久一区二区| 久久久久久久99| 91精品综合久久久久久| 东凛在线观看| 欧美影院久久久| 伊色综合久久之综合久久| 中文字幕一区二区三区四区五区六区 | 午夜啪啪小视频| 国产日韩v精品一区二区| 四虎成人精品永久免费av| 欧美一卡二卡在线| 91福利在线视频| 国产成人aa精品一区在线播放| 国产精品美女在线观看直播| 青青草影院在线观看| 麻豆精品视频在线观看免费| 亚洲第一香蕉网| 午夜视黄欧洲亚洲| 高h放荡受浪受bl| 欧美激情免费在线| 国产美女精品视频免费播放软件| 手机看片福利永久国产日韩| 另类天堂av| 精品少妇人妻一区二区黑料社区 | 亚洲婷婷综合久久一本伊一区| 久久久久久亚洲av无码专区| 亚洲乱码国产乱码精品精| 色综合亚洲图丝熟| 久久免费看av| 亚洲免费影视| 成人午夜剧场视频网站| 欧美午夜激情在线| 四虎精品成人免费网站| 2024亚洲男人天堂| 黑人久久a级毛片免费观看| 国产情侣第一页| av资源站一区| 亚洲日本视频在线观看| 亚洲乱码av中文一区二区| 三级成人在线| 亚洲最大免费| 国产精品夜夜嗨| 四虎永久在线精品| 日韩二区三区在线| 视频在线日韩| 亚洲一区二区三区精品在线观看 | 亚洲aaaaaa| 欧美精品99| www.男人天堂| 色婷婷国产精品久久包臀| 丁香婷婷在线观看| 91久久综合亚洲鲁鲁五月天| 欧美成人嫩草网站| zjzjzjzjzj亚洲女人| 精品久久久在线观看| 黄网在线观看| 国产日产欧美a一级在线| 欧美黄在线观看| 9.1成人看片| 欧美日韩久久久一区| 黄色成人在线观看| 国产v亚洲v天堂无码| 亚洲一区二区三区免费在线观看| 亚洲图片另类小说| 91精品婷婷国产综合久久性色 | 欧美中文字幕一二三区视频| 午夜免费视频在线国产| 成人免费在线看片| 免费欧美日韩| 日韩精品一区二区亚洲av性色| 欧美精品一区二区久久婷婷| 不卡av播放| 日韩专区第三页| 久久免费视频一区| 国产乱人乱偷精品视频| 国内自拍欧美激情| 日韩国产专区| 大尺度做爰床戏呻吟舒畅| 91精品办公室少妇高潮对白| av免费在线网站| 欧美激情国产日韩| 国产精品69久久久久水密桃| 麻豆精品久久久久久久99蜜桃| 菠萝蜜影院一区二区免费| 国产欧美三级电影| 狠狠干狠狠操视频| 天天综合色天天| 黄色国产网站在线播放| 欧美日本亚洲| 成人av网在线| 91福利在线观看视频|