在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    774

    瀏覽量

    44251
收藏 人收藏

    評論

    相關推薦

    DAC7678怎樣才能完全輸出0電平?

    按照datasheet寫的驅動,現在有個問題一直解決不了,對DAC7678 使用軟件復位或CLR引腳清除都不能實現輸出完全是0電平,而是0.5mV-1.5V不等的電壓,幾個通道電壓值不一樣,但是都有; 求指點,怎樣才能完全輸出0電平; 補充:使用的外部參考電壓;
    發表于 01-24 06:09

    dbForge Studio For SQL Server:用于有效開發的最佳SQL Server集成開發環境

    dbForge Studio For SQL Server:用于有效開發的最佳SQL Server集成開發環境 SQL編碼助手 SQL代碼分析 查詢分析器 可視化查詢生成器 數據和模式
    的頭像 發表于 01-16 10:36 ?110次閱讀

    ISO3082和MAX3485E通訊,轉出來的串口數據總出問題,為什么?怎么解決?

    你好,我使用你們公司的ISO3082和MAX3485E 通訊,發現3082出來的數據到AB是對 的,MAX3485E 反回來的數據AB到3082的管腳上是對的,但是轉出來的串口數據總出問題,無論AB上的電阻怎么接 怎么改都是解決不了,請相關工程師答復下,謝謝!
    發表于 12-23 07:25

    AFE4490電路板讀寫寄存器的值一直是0x00,為什么?怎么解決?

    現在做一款關于AFE4490電路板,SPI通信問題一直解決不了,讀寫寄存器的值一直是0x00;我把我的SPI讀寫程序下載到其他開發板,讀取數值一直是0xFF,該問題如何解決?應該檢查什么方便問題?求指教
    發表于 12-17 07:41

    SQL與NoSQL的區別

    在信息技術領域,數據庫是存儲和管理數據的核心組件。隨著互聯網的發展和大數據時代的到來,對數據庫的需求也在不斷變化。SQL和NoSQL作為兩種主流的數據庫管理系統,各自有著獨特的優勢和應用場
    的頭像 發表于 11-19 10:15 ?234次閱讀

    基于圖遍歷的Flink任務畫布模式下零代碼開發實現方案

    (DAG),并在 Flink 集群上運行。而提交一個 Flink SQL 應用,其執行流程也類似,只是多了一步使用 flink-table-planer 模塊從
    的頭像 發表于 11-05 10:35 ?780次閱讀
    基于圖遍歷的<b class='flag-5'>Flink</b>任務畫布模式下零代碼開發實現方案

    TPA3123D2通過2腳控制開關機時,會出現雜音或著嗒嗒的開關機聲音,怎么解決?

    ,即輸入端無音樂輸入或接地時.部分的板子,在SD接地,即關機情況下,還是有聲音,類似收音機收不到臺的沙沙聲音,有的板子換個芯片可能解決,但也可能換幾個都解決不了,把外圍電容都換了,還是沒
    發表于 10-28 08:21

    tpa3118做了一個雙功放,功放出來有滋滋的底噪,怎么解決?

    我做了一個雙功放,功放出來有滋滋的底噪,怎么弄都解決不了,求助大神
    發表于 10-21 08:05

    TPA3116增益不管怎么設置都最大只能輸出10W,再加大輸入就失真,是什么原因呢?

    有散熱器,自我感覺不是過熱保護,好像是過載保護) 過了好多天都解決不了,都快放棄這個芯片,請問是什么原因呢?
    發表于 10-14 08:19

    掃碼配網時,LCD出現分屏是什么原因導致的?

    在掃碼配網或者智能配網時,中間看串口好像是少了6,7幀畫面,如圖下圖日志所示,應該是WIFI寫flash原因導致psram進不去,時序不對了而分屏,有什么方法可以解決這個協調問題呢,看這個好像不知道為啥我也解決不了不知道是我操作問題還是什么?官方人員和大佬們也可以幫忙一下謝謝啦
    發表于 06-11 06:27

    protues出現Real Time Simulation failed to start.

    PWM波來控制)。系統想要實現的功能是基于模糊PID的溫濕度控制系統設計,哪位大神幫忙看一下,兄弟是實在解決不了
    發表于 04-29 21:52

    求助貼,急急急!!!

    安裝stm32cube,打開一直有問題。找人遠程也解決不了說是軟件bug,網絡問題。
    發表于 04-18 22:06

    STM32G4的外部晶振設置can通信波特率,波特率均不正常無法通信怎么解決?

    均不正常無法通信。然后目前項目要求外設時鐘必須要160M因此現在解決不了了,請問有人知道是什么原因嗎,或者有什么其他解決方法
    發表于 04-11 06:23

    SQL全外連接剖析

    SQL中的全外連接是什么? 在SQL中,FULLOUTERJOIN組合左外連接和右外連接的結果,并返回連接子句兩側表中的所有(匹配或不匹配)行。接下面sojson給大家詳細講解。 ? 圖解:SQL
    的頭像 發表于 03-19 18:28 ?2304次閱讀
    <b class='flag-5'>SQL</b>全外連接剖析

    為什么需要監控SQL服務器?

    如今,大多數桌面、移動、云、物聯網和其他應用程序都嚴重依賴數據庫。為了支持這些,SQL Server部署、容量和工作負載不斷增長。當這種情況發生時,企業需要確保數據系統滿足所需的性能要求。 SQL
    的頭像 發表于 02-19 17:19 ?522次閱讀
    主站蜘蛛池模板: 久久国产精品免费 | 久久影视免费观看网址 | 久久免费精品国产72精品剧情 | 国产成人在线网址 | 中国性猛交xxxxx免费看 | 亚洲区中文字幕 | 四虎免费看黄 | 一级aaaaa毛片免费视频 | 在线观看免费av网站 | 国产美女久久久 | 琪琪see色原网一区二区 | 666精品国产精品亚洲 | 黄视频免费在线看 | 免费一级黄| 亚洲成色在线综合网站 | 欧美高清在线观看视频 | 亚洲电影一区二区 | 久久综合欧美成人 | 日本免费人成黄页在线观看视频 | 亚欧美视频| 久久国产香蕉一区精品 | 4399一级成人毛片 | 韩国三级床戏合集 | 色.com| 女bbbbxxxx视频| 无人区理论片手机看片 | 天天干夜夜拍 | 国产日韩精品一区二区在线观看 | 最新欧美伦理网 | 亚洲三级黄色 | 伊人成人在线 | 日韩欧美高清一区 | 黄色在线观看网址 | 2019天天操 | 国产高清在线免费 | 俺也来国产精品欧美在线观看 | 欧美精品video | 亚洲欧美一区二区三区麻豆 | 黄黄的网站 | 国产亚洲精品美女久久久 | 欧洲精品不卡1卡2卡三卡 |