国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

2.3 如何使用FlinkSQL讀取&寫入到JDBC(MySQL)

這篇具有很好參考價(jià)值的文章主要介紹了2.3 如何使用FlinkSQL讀取&寫入到JDBC(MySQL)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、JDBC SQL 連接器

FlinkSQL允許使用 JDBC連接器,向任意類型的關(guān)系型數(shù)據(jù)庫讀取或者寫入數(shù)據(jù)

添加Maven依賴

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-connector-jdbc</artifactId>
  <version>3.1.0-1.17</version>
</dependency>

注意:如果使用?sql-client客戶端,需保證?flink-1.17.1/lib 目錄下 存在相應(yīng)的jar包

?相關(guān)jar可以通過官網(wǎng)下載:JDBC SQL 連接器?

2.3 如何使用FlinkSQL讀取&寫入到JDBC(MySQL),# FlinkSQL 使用技巧,mysql,java,數(shù)據(jù)庫


2、讀取 MySQL

FlinkSQL讀取MySQL表時(shí),為批式處理,在流式計(jì)算任務(wù)中,通常被做維表來使用

-- 在FlinkSQL中創(chuàng)建 MySQL Source 表
drop table mysql_source_table;
CREATE TABLE mysql_source_table (
  `id` INT,
  `title` STRING,
  `author` STRING,
  `price` DOUBLE,
  `qty` INT
) WITH (
   'connector' = 'jdbc',
   'url' = 'jdbc:mysql://worker01/flink',
   'driver' = 'com.mysql.jdbc.Driver',  -- 【可選】不設(shè)置時(shí),將自動(dòng)從url中推導(dǎo)
   'username' = 'xxxx',
   'password' = 'xxxx',
   'table-name' = 'books'
);

-- 批式 sql,查看 JDBC 表中的數(shù)據(jù)
select * from mysql_source_table;

運(yùn)行結(jié)果:

2.3 如何使用FlinkSQL讀取&寫入到JDBC(MySQL),# FlinkSQL 使用技巧,mysql,java,數(shù)據(jù)庫


3、寫入MySQL

3.1 何時(shí)批量寫入MySQL呢?

FlinkSQL往MySQL寫入數(shù)據(jù)時(shí),默認(rèn)會(huì)在客戶端緩存數(shù)據(jù),當(dāng)觸發(fā)設(shè)置的閾值后,才會(huì)向服務(wù)端發(fā)送數(shù)據(jù)

2.3 如何使用FlinkSQL讀取&寫入到JDBC(MySQL),# FlinkSQL 使用技巧,mysql,java,數(shù)據(jù)庫

開啟checkpoint :

# TODO 開啟checkpoint,當(dāng)checkpoint后,會(huì)觸發(fā)jdbc的flush操作
set execution.checkpointing.interval=300sec;

設(shè)置 flush 前緩存記錄的最大值 、flush 間隔時(shí)間:

-- TODO 創(chuàng)建sink mysql table
drop table mysql_sink_table;
CREATE TABLE mysql_sink_table (
  `id` INT,
  `title` STRING,
  `author` STRING,
  `price` DOUBLE,
  `qty` INT
) WITH (
   'connector' = 'jdbc',
   'url' = 'jdbc:mysql://worker01:3306/flink?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8',
   'username' = 'xxxx',
   'password' = 'xxxx',
   'table-name' = 'books',
   'sink.buffer-flush.max-rows' = '100', -- flush 前緩存記錄的最大值,默認(rèn)值為100,設(shè)置為0時(shí),表示不緩存數(shù)據(jù)(來一條寫入一條)
   'sink.buffer-flush.interval' = '50s' -- flush 間隔時(shí)間,超過該時(shí)間后異步線程將 flush 數(shù)據(jù)。默認(rèn)為1s
);

使用說明:

FLinkSQL寫入MySQL時(shí),常通過?sink.buffer-flush.max-rows、sink.buffer-flush.interval 來控制寫入數(shù)據(jù)的延遲程度

? ? ? ? 當(dāng) 對寫入實(shí)時(shí)性要求較高時(shí),可以將?sink.buffer-flush.max-rows = 0 ,表示到來一條數(shù)據(jù)后立即寫入MySQL,但帶來的后果是 長時(shí)間占有mysql連接

? ? ? ? 當(dāng) 數(shù)據(jù)量大且對實(shí)時(shí)要求不高時(shí),可根據(jù)業(yè)務(wù)需求調(diào)大配置,可使實(shí)時(shí)行和性能最優(yōu)


3.2 sink mysql table 中主鍵的作用

在FLinkSQL中創(chuàng)建sink mysql table時(shí),如果表中定義了主鍵,則連接器將以 upsert 模式工作

否則連接器將以 append 模式工作

? ? ? ? ?upsert 模式:Flink 將根據(jù)主鍵判斷插入新行或者更新已存在的行

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?使用這種模式時(shí),確保MySQL中的底表定義主鍵和添加唯一性約束

? ? ? ?append 模式:對MySQL庫中底表做insert操作

?upsert 模式:

-- TODO 創(chuàng)建MySQL 表
CREATE TABLE `books` (
  `id` int(11) NOT NULL,
  `title` varchar(99) DEFAULT NULL,
  `author` varchar(99) DEFAULT NULL,
  `price` double DEFAULT NULL,
  `qty` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- TODO 創(chuàng)建FLinkSQL表(sink mysql table)
drop table mysql_sink_table;
CREATE TABLE mysql_sink_table (
  `id` INT,
  `title` STRING,
  `author` STRING,
  `price` DOUBLE,
  `qty` INT,
  PRIMARY KEY (id) NOT ENFORCED -- 指定主鍵字段
) WITH (
   'connector' = 'jdbc',
   'url' = 'jdbc:mysql://worker01:3306/flink?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8',
   'username' = 'root',
   'password' = 'xxxx',
   'table-name' = 'books',
   'sink.buffer-flush.max-rows' = '0' -- 實(shí)時(shí)寫入
);

-- TODO 往 mysql中寫入數(shù)據(jù)(相同key的數(shù)據(jù)寫入后,會(huì)做upsert操作)
insert into mysql_sink_table
SELECT * FROM (VALUES
  (5,'A Dream in Red Mansions','y', 3.0,1)
, (6,'Journey to the West','y', 3.0,1)
, (7,'Water Margin','y', 3.0,1)
) AS books (id, title,author,price,qty);

append 模式:

-- TODO 創(chuàng)建FLinkSQL表(sink mysql table)
drop table mysql_sink_table;
CREATE TABLE mysql_sink_table (
  `id` INT,
  `title` STRING,
  `author` STRING,
  `price` DOUBLE,
  `qty` INT
) WITH (
   'connector' = 'jdbc',
   'url' = 'jdbc:mysql://worker01:3306/flink?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8',
   'username' = 'root',
   'password' = 'xxx',
   'table-name' = 'books',
   'sink.buffer-flush.max-rows' = '0' -- 實(shí)時(shí)寫入
);

-- TODO 往 mysql中寫入數(shù)據(jù)(相同key的數(shù)據(jù)寫入后,會(huì)做操作)
insert into mysql_sink_table
SELECT * FROM (VALUES
  (5,'A Dream in Red Mansions','y', 3.0,1)
, (6,'Journey to the West','y', 3.0,1)
, (7,'Water Margin','y', 3.0,1)
) AS books (id, title,author,price,qty);

注意:使用 append模式時(shí),如果MySQL底表中存在主鍵或唯一性約束時(shí),INSERT 插入可能會(huì)失敗

insert into 失?。?mark hidden color="red">文章來源:http://www.zghlxwxcb.cn/news/detail-735003.html

2.3 如何使用FlinkSQL讀取&寫入到JDBC(MySQL),# FlinkSQL 使用技巧,mysql,java,數(shù)據(jù)庫文章來源地址http://www.zghlxwxcb.cn/news/detail-735003.html

到了這里,關(guān)于2.3 如何使用FlinkSQL讀取&寫入到JDBC(MySQL)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Java】IntelliJ IDEA使用JDBC連接MySQL數(shù)據(jù)庫并寫入數(shù)據(jù)

    【Java】IntelliJ IDEA使用JDBC連接MySQL數(shù)據(jù)庫并寫入數(shù)據(jù)

    在 IntelliJ IDEA 中連接 MySQL 數(shù)據(jù)庫并將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)表中,使用 Java 和 JDBC(Java Database Connectivity)實(shí)現(xiàn)。 下載并安裝 IntelliJ IDEA 下載并安裝 MySQL 數(shù)據(jù)庫 下載 MySQL Connector/J 驅(qū)動(dòng)程序(JDBC 驅(qū)動(dòng)程序) 使用 Navicat 創(chuàng)建一個(gè) MySQL 數(shù)據(jù)庫 打開 IntelliJ IDEA。 選擇 \\\"File\\\"→ “New” →

    2024年02月05日
    瀏覽(51)
  • 【Flink】FlinkSQL讀取Mysql表中時(shí)間字段相差13個(gè)小時(shí)

    問題:Flink版本1.13,在我們使用FlinkSQL讀取Mysql中數(shù)據(jù)的時(shí)候,發(fā)現(xiàn)讀取出來的時(shí)間字段中的數(shù)據(jù)和Mysql表中的數(shù)據(jù)相差13個(gè)小時(shí),Mysql建表語句及插入的數(shù)據(jù)如下; CREATE TABLE `mysql_example` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT \\\'自增ID\\\', `name` varchar(64) DEFAULT NULL COMMENT \\\'姓名\\\'

    2024年01月19日
    瀏覽(20)
  • Flink將數(shù)據(jù)寫入MySQL(JDBC)

    Flink將數(shù)據(jù)寫入MySQL(JDBC)

    在實(shí)際的生產(chǎn)環(huán)境中,我們經(jīng)常會(huì)把Flink處理的數(shù)據(jù)寫入MySQL、Doris等數(shù)據(jù)庫中,下面以MySQL為例,使用JDBC的方式將Flink的數(shù)據(jù)實(shí)時(shí)數(shù)據(jù)寫入MySQL。 2.1 版本說明 2.2 導(dǎo)入相關(guān)依賴 2.3 連接數(shù)據(jù)庫,創(chuàng)建表 2.4 創(chuàng)建POJO類 2.5 自定義map函數(shù) 2.5 Flink2MySQL 2.6 啟動(dòng)necat、Flink,觀察數(shù)據(jù)庫寫

    2024年02月07日
    瀏覽(15)
  • JDBC MySQL任意文件讀取分析

    JDBC MySQL任意文件讀取分析

    文章首發(fā)于知識(shí)星球-賽博回憶錄。給主管打個(gè)廣告,嘿嘿。 在滲透測試中,有些發(fā)起mysql測試流程(或者說mysql探針)的地方,可能會(huì)存在漏洞。在連接測試的時(shí)候通過添加allowLoadLocalInfileInPath,allowLoadLocalInfile,allowUrlInLocalInfile與偽造的服務(wù)器進(jìn)行通信,造成任意文件讀取。 完整

    2024年02月07日
    瀏覽(11)
  • flink:通過table api把文件中讀取的數(shù)據(jù)寫入MySQL

    當(dāng)寫入數(shù)據(jù)到外部數(shù)據(jù)庫時(shí),F(xiàn)link 會(huì)使用 DDL 中定義的主鍵。如果定義了主鍵,則連接器將以 upsert 模式工作,否則連接器將以 append 模式工作 文件info.txt

    2024年03月15日
    瀏覽(17)
  • python如何操作excel,在excel中讀取和寫入數(shù)據(jù)

    python如何操作excel,在excel中讀取和寫入數(shù)據(jù)

    Excel 是 Microsoft 為使用 Windows 和 Apple Macintosh 操作系統(tǒng)的電腦編寫的一款電子表格軟件。直觀的界面、出色的計(jì)算功能和圖表工具,再加上成功的市場營銷,使 Excel 成為最流行的個(gè)人計(jì)算機(jī)數(shù)據(jù)處理軟件。在 1993 年,作為 Microsoft Office 的組件發(fā)布了5.0版之后, Excel 就開始成為

    2024年02月03日
    瀏覽(22)
  • 使用EasyExcel讀取和寫入表格

    使用EasyExcel讀取和寫入表格

    首先我創(chuàng)建了一個(gè)Excel的文件,數(shù)據(jù)如下 讀取excel在EasyExcel中是很簡單的一件事情,首先,我們需要有對象去存儲(chǔ)一條條數(shù)據(jù),所以這里我建立了一個(gè)Student對象,有如下四個(gè)字段,并分別賦予了get和set方法 @ExcelProperty該注解就是映射表頭的,value的值就是Excel中實(shí)際的表頭數(shù)據(jù)

    2024年02月02日
    瀏覽(15)
  • 2.4 如何在FlinkSQL使用DataGen(數(shù)據(jù)生成器)

    2.4 如何在FlinkSQL使用DataGen(數(shù)據(jù)生成器)

    FLinkSQL中可以使用內(nèi)置的DataGen SQL 連接器來生成測試數(shù)據(jù) 官網(wǎng)鏈接:DataGen SQL 連接器 隨機(jī)數(shù)數(shù)據(jù)生成器支持隨機(jī)生成 char、varchar、binary、varbinary、string 類型的數(shù)據(jù) 它是一個(gè)無界流的數(shù)據(jù)生成器 運(yùn)行結(jié)果: 序列數(shù)據(jù)生成器,可以根據(jù)指定的起始值和結(jié)束值生成連續(xù)的整數(shù)數(shù)

    2024年02月05日
    瀏覽(25)
  • MySQL特殊函數(shù)使用技巧

    使用group_concat函數(shù),可以輕松的把分組后,name 相同的數(shù)據(jù)拼接到一起,組成一個(gè)字符串,用逗號(hào)分隔。 通過該函數(shù)就能獲取字符長度。 在某個(gè)字符串中的位置 將字符串中的字符 A 替換成 B。REPLACE(name,‘A’,‘B’) 獲取當(dāng)前時(shí)間 這樣就能將 order 表中的部分?jǐn)?shù)據(jù),非常輕松插

    2024年02月04日
    瀏覽(30)
  • C#【必備技能篇】使用NPOI實(shí)現(xiàn)對excel的讀取和寫入

    C#【必備技能篇】使用NPOI實(shí)現(xiàn)對excel的讀取和寫入

    依次執(zhí)行下圖中的1-6按鈕 , 可以通過查看程序文件夾中的excel文件來加深理解。 鏈接:https://pan.baidu.com/s/19PgQMhCKviw9aBAjmJHSww 提取碼:2omi 需要在源碼中增加如下引用。相應(yīng)的dll已更新到 5 的下載地址中。

    2023年04月13日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包