日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Flink SQL Client初探

發布時間:2023/12/16 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flink SQL Client初探 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于Flink SQL Client

Flink Table & SQL的API實現了通過SQL語言處理實時技術算業務,但還是要編寫部分Java代碼(或Scala),并且還要編譯構建才能提交到Flink運行環境,這對于不熟悉Java或Scala的開發者就略有些不友好了;
SQL Client的目標就是解決上述問題(官方原話with a build tool before being submitted to a cluster.

局限性

遺憾的是,在Flink-1.10.0版本中,SQL Client只是個Beta版本(不適合用于生產環境),并且只能連接到本地Flink,不能像mysql、cassandra等客戶端工具那樣遠程連接server,這些在將來的版本會解決:

環境信息

接下來采用實戰的方式對Flink SQL Client做初步嘗試,環境信息如下:

  • 電腦:MacBook Pro2018 13寸,macOS Catalina 10.15.3
  • Flink:1.10.0
  • JDK:1.8.0_211
  • 本地啟動flink

  • 下載flink包,地址:http://ftp.kddilabs.jp/infosystems/apache/flink/flink-1.10.0/flink-1.10.0-bin-scala_2.11.tgz
  • 解壓:tar -zxvf flink-1.10.0-bin-scala_2.11.tgz
  • 進目錄flink-1.10.0/bin/,執行命令./start-cluster.sh啟動本地flink;
  • 訪問該機器的8081端口,可見本地flink啟動成功:
  • 啟動SQL Client CLI

  • 在目錄flink-1.10.0/bin/執行./sql-client.sh即可啟動SQL Client CLI,如下圖所示,紅框中的BETA提醒著在生產環境如果要用此工具:

  • 第一個要掌握的是HELP命令:

  • 從hello world開始把,執行命令select ‘Hello world!’;,控制臺輸出如下圖所示,輸入Q可退出:

  • 兩種展示模式

  • 第一種是table mode,效果像是對普通數據表的查詢,設置該模式的命令:
  • SET execution.result-mode=table;
  • 第二種是changelog mode,效果像是打印每一次數據變更的日志,設置該模式的命令:
  • SET execution.result-mode=changelog;
  • 設置table mode后,執行以下命令作一次簡單的分組查詢:
  • SELECT name, COUNT(*) AS cnt FROM (VALUES ('Bob'), ('Alice'), ('Greg'), ('Bob')) AS NameTable(name) GROUP BY name;
  • 為了便于對比,下圖同時貼上兩種模式的查詢結果,注意綠框中顯示了該行記錄是增加還是刪除:

  • 不論是哪種模式,查詢結構都保存在SQL Client CLI進程的堆內存中;

  • 在chenglog模式下,為了保證控制臺可以正常輸入輸出,查詢結果只展示最近1000條;

  • table模式下,可以翻頁查詢更多結果,結果數量受配置項max-table-result-rows以及可用堆內存限制;

  • 進一步體驗

    前面寫了幾行SQL,對Flink SQL Client有了最基本的感受,接下來做進一步的體驗,內容如下:

  • 創建CSV文件,這是個最簡單的圖書信息表,只有三個字段:名字、數量、類目,一共十條記錄;
  • 創建SQL Client用到的環境配置文件,該文件描述了數據源以及對應的表的信息;
  • 啟動SQL Client,執行SQL查詢上述CSV文件;
  • 整個操作步驟如下圖所示:
  • 操作

  • 首先請確保Flink已經啟動;
  • 創建名為book-store.csv的文件,內容如下:
  • name001,1,aaa name002,2,aaa name003,3,bbb name004,4,bbb name005,5,bbb name006,6,ccc name007,7,ccc name008,8,ccc name009,9,ccc name010,10,ccc
  • flink-1.10.0/conf目錄下創建名為book-store.yaml的文件,內容如下:
  • tables:- name: BookStoretype: source-tableupdate-mode: appendconnector:type: filesystempath: "/Users/zhaoqin/temp/202004/26/book-store.csv"format:type: csvfields:- name: BookNametype: VARCHAR- name: BookAmounttype: INT- name: BookCatalogtype: VARCHARline-delimiter: "\n"comment-prefix: ","schema:- name: BookNametype: VARCHAR- name: BookAmounttype: INT- name: BookCatalogtype: VARCHAR- name: MyBookViewtype: viewquery: "SELECT BookCatalog, SUM(BookAmount) AS Amount FROM BookStore GROUP BY BookCatalog"execution:planner: blink # optional: either 'blink' (default) or 'old'type: streaming # required: execution mode either 'batch' or 'streaming'result-mode: table # required: either 'table' or 'changelog'max-table-result-rows: 1000000 # optional: maximum number of maintained rows in# 'table' mode (1000000 by default, smaller 1 means unlimited)time-characteristic: event-time # optional: 'processing-time' or 'event-time' (default)parallelism: 1 # optional: Flink's parallelism (1 by default)periodic-watermarks-interval: 200 # optional: interval for periodic watermarks (200 ms by default)max-parallelism: 16 # optional: Flink's maximum parallelism (128 by default)min-idle-state-retention: 0 # optional: table program's minimum idle state timemax-idle-state-retention: 0 # optional: table program's maximum idle state time# (default database of the current catalog by default)restart-strategy: # optional: restart strategytype: fallback # "fallback" to global restart strategy by default# Configuration options for adjusting and tuning table programs.# A full list of options and their default values can be found # on the dedicated "Configuration" page. configuration:table.optimizer.join-reorder-enabled: truetable.exec.spill-compression.enabled: truetable.exec.spill-compression.block-size: 128kb# Properties that describe the cluster to which table programs are submitted to.deployment:response-timeout: 5000
  • 對于book-store.yaml文件,有以下幾處需要注意:
    a. tables.type等于source-table,表明這是數據源的配置信息;
    b. tables.connector描述了詳細的數據源信息,path是book-store.csv文件的完整路徑;
    c. tables.format描述了文件內容;
    d. tables.schema描述了數據源表的表結構;
    ed. type為view表示MyBookView是個視圖(參考數據庫的視圖概念);

  • flink-1.10.0目錄執行以下命令,即可啟動SQL Client,并指定book-store.yaml為環境配置:

  • bin/sql-client.sh embedded -d conf/book-store.yaml
  • 查全表:
  • SELECT * FROM BookStore;

  • 按照BookCatalog分組統計記錄數:
  • SELECT BookCatalog, COUNT(*) AS BookCount FROM BookStore GROUP BY BookCatalog;

  • 查詢視圖:
  • select * from MyBookView;

    至此,Flink SQL Client的初次體驗就完成了,咱們此工具算是有了基本了解,接下來的文章會進一步使用Flink SQL Client做些復雜的操作;

    歡迎關注我的公眾號:程序員欣宸

    總結

    以上是生活随笔為你收集整理的Flink SQL Client初探的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。