国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

簡介

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

場景介紹

多表關聯時表 A 關聯表 B, 表 A 具有pk1, field1, field2, field3字段,表 B 具有 pk2, field4, field5, field6 字段,表 A 通過 pk1 關聯表B pk2。使用 Flink SQL 會如下實現:

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;

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

然后在一個SQL查詢數據的接口就遇到了如下問題:每次從接口查詢返回的結果都不穩定,同樣的查詢條件不同時機返回的結果不一樣。SQL查詢語句如下:

select C.field1,C.field2,C.field3
FROM C group by field1,field2,field3;
為什么SQL查詢的結果會不一致呢?起初排查原因發現 group by 返回結果有多條,而在SQL 中也沒有使用 order by 對數據進行排序,所以導致了結果不穩定。后又排查為什么會出現多條結果呢?于是懷疑 field1, field2, field3 有不符合預期的數據。如: 

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

其中第2條是多余的,不應該出現。結果發現可能是如下原因導致的:這3個字段 filed1, field2, filed3 在StarRocks數據庫中會一直在變化,不停的寫入新值。導致 SQL 查詢時可以查到 field3 為 null 的數據。
為什么field3為不斷變化呢?究其原因是:StarRocks 主鍵表不支持部分列更新(Partial Update)。當field3 為null時,同樣會被寫入 StarRocks。我們在通過JDQ讀取表A field1, field2, field3 數據給表C寫入數據時,當JDQ 消息隊列中表A的記錄存在亂序場景且field3 字段可能為null時,最終寫入StarRocks的field3 字段會出現時而為null,時而不為null。 所以SQL查詢接口中 group by的結果會出現不穩定。

總結

為什么在開發的時候當時沒有發現 StarRocks 主鍵表這個問題呢?原因:1. 大家所關注的部分列更新,多數是關注insert into table_C(field1, field2, field3) 中不包含的字段field4,field5...等被更新為null,而當前場景是會把 field3 為null的值也寫入SR數據庫中,這不是我們期望的結果。2.表A作為主表,通常不會出現開始field3有值后來又沒有值(null)的場景。出現這個現象大概率是因為上游JDQ消息隊列中的數據亂序了,導致field3 為null的后出現了。而這種問題又比較難發現。

什么情況下會出現此類問題呢?寫入的數據庫不支持部分列更新場景時會出現。如StarRocks, Doris。因為MySQL, ES,ClickHouse的部分表引擎支持部分列更新,所以在MySQL, ES,ClickHouse中不會出現。

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

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    789

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    TCP三次握手與四次揮手的詳細過程

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

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

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

    VSCODE+ESP-IDF運行\'\'hello world\",partition-table進程卡住

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

    使用NVIDIA Nemotron RAG和Microsoft SQL Server 2025構建高性能AI應用

    在 Microsoft Ignite 2025 大會上,隨著 Microsoft SQL Server 2025 的發布,AI 就緒型企業數據庫愿景成為現實,為開發者提供強大的新工具,例如內置向量
    的頭像 發表于 12-01 09:31 ?790次閱讀
    使用NVIDIA Nemotron RAG和Microsoft <b class='flag-5'>SQL</b> Server 2025構建高性能AI應用

    不用編程不用聯網,實現倍福(BECKHOFF)PLC對接SQL數據庫,上報和查詢數據的案例

    ?IGT-DSER智能網關模塊,支持各種PLC、智能儀表、遠程IO與數據庫之間雙向通訊,既可以讀取設備的數據上報到SQL數據庫,也可以從數據庫查詢數據后寫入到設備;數據庫軟件支持MySQL
    發表于 10-10 11:14

    使用env v2.0執行scons --dist產生缺失依賴報錯怎么解決?

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

    數據庫慢查詢分析與SQL優化實戰技巧

    今天,我將分享我在處理數千次數據庫性能問題中積累的實戰經驗,幫助你系統掌握慢查詢分析與SQL優化的核心技巧。無論你是剛入門的運維新手,還是有一定經驗的工程師,這篇文章都將為你提供實用的解決方案。
    的頭像 發表于 09-08 09:34 ?974次閱讀

    SQL 通用數據類型

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

    Text2SQL準確率暴漲22.6%!3大維度全拆

    摘要 技術背景:Text2SQL 是將自然語言查詢轉為 SQL 的任務,經歷了基于規則、神經網絡、預訓練語言模型、大語言模型四個階段。當前面臨提示優化、模型訓練、推理時增強三大難題,研究
    的頭像 發表于 08-14 11:17 ?702次閱讀
    Text2<b class='flag-5'>SQL</b>準確率暴漲22.6%!3大維度全拆

    數據庫數據恢復—SQL Server數據庫被加密如何恢復數據?

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

    KT6368A 藍牙芯片通過 FCC、BQB、KC、CE 等認證的操作指南

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

    達夢數據庫常用管理SQL命令詳解

    達夢數據庫常用管理SQL命令詳解
    的頭像 發表于 06-17 15:12 ?7174次閱讀
    達夢數據庫常用管理<b class='flag-5'>SQL</b>命令詳解

    大促數據庫壓力激增,如何一眼定位 SQL 執行來源?

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

    禾賽激光雷達成為理想汽車的安全新標配

    在節目中,李想提到一個關鍵認知:“過去,人們很容易陷入一個誤區。認為人類靠眼睛就能開車,所以車輛使用攝像頭就能達到人類開車的水平。但其實我們今天要解決的是人類解決不了的問題。因為大家對于車輛的安全要求不滿足于現狀。”
    的頭像 發表于 05-16 15:46 ?944次閱讀

    不用編程不用聯網,PLC和儀表直接對SQL接數據庫,有異常時還可先將數據緩存

    不用PLC編程也不用聯網,還不用電腦,采用IGT-DSER智能網關實現PLC和儀表直接對SQL接數據庫。 跟服務端通訊有異常時還可以先將數據暫存,待故障解除后自動重新上報到數據庫;也可以實現從數據庫
    發表于 04-12 10:47