chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是 Flink SQL 解決不了的問題?

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-07-09 20:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

簡介

在實(shí)時(shí)數(shù)據(jù)開發(fā)過程中,大家經(jīng)常會用 Flink SQL 或者 Flink DataStream API 來做數(shù)據(jù)加工。通常情況下選用2者都能加工出想要的數(shù)據(jù),但是總會有 Flink SQL 覆蓋不了的問題,但 SQL 的易用性又難以讓人釋懷。所以有些場景在使用 FLink SQL 開始就與需要額外注意,下面就介紹一種多表關(guān)聯(lián)時(shí)存在部分列更新(partial Update)場景,在 DataStream API 和 Flink SQL 開發(fā)時(shí)都容易忽視的情況而導(dǎo)致的問題。為了簡化問題描述,采用了Flink SQL 來闡述此類問題。

場景介紹

多表關(guān)聯(lián)時(shí)表 A 關(guān)聯(lián)表 B, 表 A 具有pk1, field1, field2, field3字段,表 B 具有 pk2, field4, field5, field6 字段,表 A 通過 pk1 關(guān)聯(lián)表B pk2。使用 Flink SQL 會如下實(shí)現(xiàn):

CREATE TABLE jdq_source(
pk1 INT,
field1 STIRNG,
field2 STIRNG,
field3 STIRNG,
PRIMARY KEY(pk1) NOT ENFORCED
) WITH(...);

CREATE TABLE sr_sink(
pk1 INT,
field1 STRING,
field2 STRING,
field3 STRING,
field4 STRING,
field5 STRING,
field6 STRING,
PRIMARY KEY(pk2) NOT ENFORCED
) WITH (...);

INSERT INTO C
SELECT A.pk1,A.field1,A.field2,A.field3,B.pk2,B.field4,B.field5,B.field6 FROM jdq_source A
INNER JOIN sr_sink B
ON A.pk1 = B.pk2;

上述實(shí)例中有明顯特征:使用了Join 關(guān)聯(lián), 且需要注意的是寫入的數(shù)據(jù)庫 sink 是 StarRocks。StarRocks 存在如下特性:當(dāng)表是主鍵表時(shí)是不支持部分列更新( Partial Update)的,實(shí)際上大部分時(shí)候大家都用的是主鍵表。

然后在一個(gè)SQL查詢數(shù)據(jù)的接口就遇到了如下問題:每次從接口查詢返回的結(jié)果都不穩(wěn)定,同樣的查詢條件不同時(shí)機(jī)返回的結(jié)果不一樣。SQL查詢語句如下:

select C.field1,C.field2,C.field3
FROM C group by field1,field2,field3;
為什么SQL查詢的結(jié)果會不一致呢?起初排查原因發(fā)現(xiàn) group by 返回結(jié)果有多條,而在SQL 中也沒有使用 order by 對數(shù)據(jù)進(jìn)行排序,所以導(dǎo)致了結(jié)果不穩(wěn)定。后又排查為什么會出現(xiàn)多條結(jié)果呢?于是懷疑 field1, field2, field3 有不符合預(yù)期的數(shù)據(jù)。如: 

20240530, 2, 3
20240530, 2, null
20240531, 2, 4

其中第2條是多余的,不應(yīng)該出現(xiàn)。結(jié)果發(fā)現(xiàn)可能是如下原因?qū)е碌模哼@3個(gè)字段 filed1, field2, filed3 在StarRocks數(shù)據(jù)庫中會一直在變化,不停的寫入新值。導(dǎo)致 SQL 查詢時(shí)可以查到 field3 為 null 的數(shù)據(jù)。
為什么field3為不斷變化呢?究其原因是:StarRocks 主鍵表不支持部分列更新(Partial Update)。當(dāng)field3 為null時(shí),同樣會被寫入 StarRocks。我們在通過JDQ讀取表A field1, field2, field3 數(shù)據(jù)給表C寫入數(shù)據(jù)時(shí),當(dāng)JDQ 消息隊(duì)列中表A的記錄存在亂序場景且field3 字段可能為null時(shí),最終寫入StarRocks的field3 字段會出現(xiàn)時(shí)而為null,時(shí)而不為null。 所以SQL查詢接口中 group by的結(jié)果會出現(xiàn)不穩(wěn)定。

總結(jié)

為什么在開發(fā)的時(shí)候當(dāng)時(shí)沒有發(fā)現(xiàn) StarRocks 主鍵表這個(gè)問題呢?原因:1. 大家所關(guān)注的部分列更新,多數(shù)是關(guān)注insert into table_C(field1, field2, field3) 中不包含的字段field4,field5...等被更新為null,而當(dāng)前場景是會把 field3 為null的值也寫入SR數(shù)據(jù)庫中,這不是我們期望的結(jié)果。2.表A作為主表,通常不會出現(xiàn)開始field3有值后來又沒有值(null)的場景。出現(xiàn)這個(gè)現(xiàn)象大概率是因?yàn)樯嫌蜫DQ消息隊(duì)列中的數(shù)據(jù)亂序了,導(dǎo)致field3 為null的后出現(xiàn)了。而這種問題又比較難發(fā)現(xiàn)。

什么情況下會出現(xiàn)此類問題呢?寫入的數(shù)據(jù)庫不支持部分列更新場景時(shí)會出現(xiàn)。如StarRocks, Doris。因?yàn)镸ySQL, ES,ClickHouse的部分表引擎支持部分列更新,所以在MySQL, ES,ClickHouse中不會出現(xiàn)。

同理在 DataStream API 中如果表 A,表 B 關(guān)聯(lián)后的數(shù)據(jù)直接寫入StarRocks 的話,也會出現(xiàn)此類問題。
以上這個(gè)問題在 Flink SQL 中無法解決,在 Flink DataStream API 中可以模擬部分列更新來避免此類問題。具體方法:在DatStream 任務(wù)中增加一個(gè)MapState, 用來在新數(shù)據(jù)到來時(shí)從MapState拿出緩存的數(shù)據(jù),并和新到來的數(shù)據(jù)進(jìn)行合并,來實(shí)現(xiàn)部分列更新功能,最后再寫入 StarRocks。
雖然問題不是Flink SQL導(dǎo)致的,但是上面的問題可以通過Flink DataStream API來規(guī)避。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    807

    瀏覽量

    46907
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    MySQL 刪庫后怎么恢復(fù)?binlog2sql 之外,NineData 還能做什么

    很多團(tuán)隊(duì)遇到 MySQL 誤刪、誤更新時(shí),第一反應(yīng)都是搜 binlog2sql。它確實(shí)能解決一部分問題,但企業(yè)生產(chǎn)環(huán)境中真正缺的,往往不是單點(diǎn)回滾腳本,而是從變更提交、預(yù)檢、審批、執(zhí)行到追蹤和回滾
    的頭像 發(fā)表于 04-15 11:49 ?32次閱讀
    MySQL 刪庫后怎么恢復(fù)?binlog2<b class='flag-5'>sql</b> 之外,NineData 還能做什么

    NineData SQL AI 智能補(bǔ)全上線:寫 SQL,不必每次都從頭敲

    NineData推出SQLAI智能補(bǔ)全功能,通過AI技術(shù)實(shí)現(xiàn)上下文感知的SQL語句智能提示。該功能不僅能補(bǔ)全關(guān)鍵字,還能根據(jù)當(dāng)前輸入內(nèi)容預(yù)測后續(xù)查詢意圖,顯著提升多表關(guān)聯(lián)、復(fù)雜條件等場景下的編寫效率
    的頭像 發(fā)表于 04-01 20:19 ?250次閱讀
    NineData <b class='flag-5'>SQL</b> AI 智能補(bǔ)全上線:寫 <b class='flag-5'>SQL</b>,不必每次都從頭敲

    SQL分析選型:DMS/DAS與NineData該如何選擇

    阿里云 DMS 的慢SQL 趨勢、DAS 的 SQL 審計(jì)能力成熟,可滿足阿里云用戶基礎(chǔ)需求。NineData 側(cè)重跨云統(tǒng)一工作臺、研發(fā)與 DBA 協(xié)同,打通慢日志分析、性能診斷、規(guī)范審核、索引建議全鏈路,更適配企業(yè)級慢查詢持續(xù)治理。
    的頭像 發(fā)表于 03-25 17:20 ?1520次閱讀
    慢<b class='flag-5'>SQL</b>分析選型:DMS/DAS與NineData該如何選擇

    NineData 社區(qū)版的慢SQL分析,比查看日志+看EXPLAIN適合中小團(tuán)隊(duì)

    本文探討 NineData 社區(qū)版在 MySQL 慢 SQL 場景對中小團(tuán)隊(duì)的適用性。與 “查看日志 + 看 EXPLAIN” 傳統(tǒng)方式不同,它將慢 SQL 按模板聚合,能從大盤、模板、診斷等多維
    的頭像 發(fā)表于 03-17 14:07 ?105次閱讀
    NineData 社區(qū)版的慢<b class='flag-5'>SQL</b>分析,比查看日志+看EXPLAIN適合中小團(tuán)隊(duì)

    MySQL 慢 SQL 排查這件事,NineData 社區(qū)VS DBeaver/ Navicat 技術(shù)分析

    DBeaver Community 和 Navicat Premium Lite 都是很有價(jià)值的客戶端工具,在單條 SQL 的查詢和驗(yàn)證上,依然是 DBA 最順手的入口。 但 NineData
    的頭像 發(fā)表于 03-17 11:53 ?112次閱讀
    MySQL 慢 <b class='flag-5'>SQL</b> 排查這件事,NineData 社區(qū)VS DBeaver/ Navicat 技術(shù)分析

    TCP三次握手與四次揮手的詳細(xì)過程

    ——SYN_RECV 隊(duì)列溢出怎么排查?TIME_WAIT 堆積幾萬個(gè)怎么處理?RST 到底是誰發(fā)的?這些問題光靠背書解決不了
    的頭像 發(fā)表于 02-25 10:38 ?413次閱讀

    VSCODE+ESP-IDF運(yùn)行\(zhòng)'\'hello world\",partition-table進(jìn)程卡住

    變化,不知道是什么原因,軟件卸載重裝都試過,網(wǎng)上的好多方法都試過,就是解決不了,一直卡在這里,特別奔潰,請大佬指點(diǎn)一下!!!!
    發(fā)表于 12-28 22:09

    使用NVIDIA Nemotron RAG和Microsoft SQL Server 2025構(gòu)建高性能AI應(yīng)用

    在 Microsoft Ignite 2025 大會上,隨著 Microsoft SQL Server 2025 的發(fā)布,AI 就緒型企業(yè)數(shù)據(jù)庫愿景成為現(xiàn)實(shí),為開發(fā)者提供強(qiáng)大的新工具,例如內(nèi)置向量
    的頭像 發(fā)表于 12-01 09:31 ?991次閱讀
    使用NVIDIA Nemotron RAG和Microsoft <b class='flag-5'>SQL</b> Server 2025構(gòu)建高性能AI應(yīng)用

    使用env v2.0執(zhí)行scons --dist產(chǎn)生缺失依賴報(bào)錯(cuò)怎么解決?

    報(bào)錯(cuò);詳情請看圖片,我嘗試了從github上拉取最新的packages的包到本地bsp的工程中,但是依舊解決不了問題。
    發(fā)表于 09-11 08:28

    SQL 通用數(shù)據(jù)類型

    SQL 通用數(shù)據(jù)類型 數(shù)據(jù)庫表中的每個(gè)列都要求有名稱和數(shù)據(jù)類型。Each column in a database table is required to have a name and a
    的頭像 發(fā)表于 08-18 09:46 ?839次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫被加密如何恢復(fù)數(shù)據(jù)?

    SQL Server數(shù)據(jù)庫故障: SQL Server數(shù)據(jù)庫被加密,無法使用。 數(shù)據(jù)庫MDF、LDF、log日志文件名字被篡改。
    的頭像 發(fā)表于 06-25 13:54 ?814次閱讀
    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—<b class='flag-5'>SQL</b> Server數(shù)據(jù)庫被加密如何恢復(fù)數(shù)據(jù)?

    KT6368A 藍(lán)牙芯片通過 FCC、BQB、KC、CE 等認(rèn)證的操作指南

    固件 RF=7_20240718”,BQB 用 “KT6328A_F510_BQB_認(rèn)證固件_20220419.fw”。燒錄后替換原芯片即可測試,可參考相關(guān)文檔,認(rèn)證不通過多因硬件問題,解決不了可聯(lián)系協(xié)助解決
    的頭像 發(fā)表于 06-18 13:44 ?1315次閱讀
    KT6368A 藍(lán)牙芯片通過 FCC、BQB、KC、CE 等認(rèn)證的操作指南

    達(dá)夢數(shù)據(jù)庫常用管理SQL命令詳解

    達(dá)夢數(shù)據(jù)庫常用管理SQL命令詳解
    的頭像 發(fā)表于 06-17 15:12 ?7587次閱讀
    達(dá)夢數(shù)據(jù)庫常用管理<b class='flag-5'>SQL</b>命令詳解

    大促數(shù)據(jù)庫壓力激增,如何一眼定位 SQL 執(zhí)行來源?

    你是否曾經(jīng)遇到過這樣的情況:在大促活動(dòng)期間,用戶訪問量驟增,數(shù)據(jù)庫的壓力陡然加大,導(dǎo)致響應(yīng)變慢甚至服務(wù)中斷?更讓人頭疼的是,當(dāng)你試圖快速定位問題所在時(shí),卻發(fā)現(xiàn)難以確定究竟是哪個(gè)業(yè)務(wù)邏輯中的 SQL
    的頭像 發(fā)表于 06-10 11:32 ?645次閱讀
    大促數(shù)據(jù)庫壓力激增,如何一眼定位 <b class='flag-5'>SQL</b> 執(zhí)行來源?

    禾賽激光雷達(dá)成為理想汽車的安全新標(biāo)配

    在節(jié)目中,李想提到一個(gè)關(guān)鍵認(rèn)知:“過去,人們很容易陷入一個(gè)誤區(qū)。認(rèn)為人類靠眼睛就能開車,所以車輛使用攝像頭就能達(dá)到人類開車的水平。但其實(shí)我們今天要解決的是人類解決不了的問題。因?yàn)榇蠹覍τ谲囕v的安全要求不滿足于現(xiàn)狀?!?/div>
    的頭像 發(fā)表于 05-16 15:46 ?1016次閱讀