91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

場景介紹

多表關(guān)聯(lián)時表 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)表是主鍵表時是不支持部分列更新( Partial Update)的,實(shí)際上大部分時候大家都用的是主鍵表。

然后在一個SQL查詢數(shù)據(jù)的接口就遇到了如下問題:每次從接口查詢返回的結(jié)果都不穩(wěn)定,同樣的查詢條件不同時機(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個字段 filed1, field2, filed3 在StarRocks數(shù)據(jù)庫中會一直在變化,不停的寫入新值。導(dǎo)致 SQL 查詢時可以查到 field3 為 null 的數(shù)據(jù)。
為什么field3為不斷變化呢?究其原因是:StarRocks 主鍵表不支持部分列更新(Partial Update)。當(dāng)field3 為null時,同樣會被寫入 StarRocks。我們在通過JDQ讀取表A field1, field2, field3 數(shù)據(jù)給表C寫入數(shù)據(jù)時,當(dāng)JDQ 消息隊(duì)列中表A的記錄存在亂序場景且field3 字段可能為null時,最終寫入StarRocks的field3 字段會出現(xiàn)時而為null,時而不為null。 所以SQL查詢接口中 group by的結(jié)果會出現(xiàn)不穩(wěn)定。

總結(jié)

為什么在開發(fā)的時候當(dāng)時沒有發(fā)現(xiàn) StarRocks 主鍵表這個問題呢?原因: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)這個現(xiàn)象大概率是因?yàn)樯嫌蜫DQ消息隊(duì)列中的數(shù)據(jù)亂序了,導(dǎo)致field3 為null的后出現(xiàn)了。而這種問題又比較難發(fā)現(xiàn)。

什么情況下會出現(xiàn)此類問題呢?寫入的數(shù)據(jù)庫不支持部分列更新場景時會出現(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)此類問題。
以上這個問題在 Flink SQL 中無法解決,在 Flink DataStream API 中可以模擬部分列更新來避免此類問題。具體方法:在DatStream 任務(wù)中增加一個MapState, 用來在新數(shù)據(jù)到來時從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

    文章

    789

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

    解決CN3302難過EMC和8.4A2A太燙問題,PW4584A選型指南

    散熱片還是解決不了。 CN3302 EMC部分因?yàn)槭峭庵肕OS,工作頻率也需要外調(diào),在EMC認(rèn)證時,需要工程師有很厲害的電源EMC經(jīng)驗(yàn),同時還要加磁珠和RC電阻等,比較難調(diào)出名。 PW4584A也是異步(肖特基二極管),內(nèi)置MOS,效率80多%,可以做8.4V1A PW4253是同步(不需要肖特基二極管
    的頭像 發(fā)表于 01-15 16:07 ?365次閱讀
    解決CN3302難過EMC和8.4A2A太燙問題,PW4584A選型指南

    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 ?808次閱讀
    使用NVIDIA Nemotron RAG和Microsoft <b class='flag-5'>SQL</b> Server 2025構(gòu)建高性能AI應(yīng)用

    不用編程不用聯(lián)網(wǎng),實(shí)現(xiàn)倍福(BECKHOFF)PLC對接SQL數(shù)據(jù)庫,上報(bào)和查詢數(shù)據(jù)的案例

    ?IGT-DSER智能網(wǎng)關(guān)模塊,支持各種PLC、智能儀表、遠(yuǎn)程IO與數(shù)據(jù)庫之間雙向通訊,既可以讀取設(shè)備的數(shù)據(jù)上報(bào)到SQL數(shù)據(jù)庫,也可以從數(shù)據(jù)庫查詢數(shù)據(jù)后寫入到設(shè)備;數(shù)據(jù)庫軟件支持MySQL
    發(fā)表于 10-10 11:14

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

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

    數(shù)據(jù)庫慢查詢分析與SQL優(yōu)化實(shí)戰(zhàn)技巧

    今天,我將分享我在處理數(shù)千次數(shù)據(jù)庫性能問題中積累的實(shí)戰(zhàn)經(jīng)驗(yàn),幫助你系統(tǒng)掌握慢查詢分析與SQL優(yōu)化的核心技巧。無論你是剛?cè)腴T的運(yùn)維新手,還是有一定經(jīng)驗(yàn)的工程師,這篇文章都將為你提供實(shí)用的解決方案。
    的頭像 發(fā)表于 09-08 09:34 ?987次閱讀

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

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

    Text2SQL準(zhǔn)確率暴漲22.6%!3大維度全拆

    摘要 技術(shù)背景:Text2SQL 是將自然語言查詢轉(zhuǎn)為 SQL 的任務(wù),經(jīng)歷了基于規(guī)則、神經(jīng)網(wǎng)絡(luò)、預(yù)訓(xùn)練語言模型、大語言模型四個階段。當(dāng)前面臨提示優(yōu)化、模型訓(xùn)練、推理時增強(qiáng)三大難題,研究
    的頭像 發(fā)表于 08-14 11:17 ?708次閱讀
    Text2<b class='flag-5'>SQL</b>準(zhǔn)確率暴漲22.6%!3大維度全拆

    數(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 ?676次閱讀
    數(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 ?1089次閱讀
    KT6368A 藍(lán)牙芯片通過 FCC、BQB、KC、CE 等認(rèn)證的操作指南

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

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

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

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

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

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

    不用編程不用聯(lián)網(wǎng),PLC和儀表直接對SQL接數(shù)據(jù)庫,有異常時還可先將數(shù)據(jù)緩存

    不用PLC編程也不用聯(lián)網(wǎng),還不用電腦,采用IGT-DSER智能網(wǎng)關(guān)實(shí)現(xiàn)PLC和儀表直接對SQL接數(shù)據(jù)庫。 跟服務(wù)端通訊有異常時還可以先將數(shù)據(jù)暫存,待故障解除后自動重新上報(bào)到數(shù)據(jù)庫;也可以實(shí)現(xiàn)從數(shù)據(jù)庫
    發(fā)表于 04-12 10:47