最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

圖加速數(shù)據(jù)湖分析-GeaFlow和Hudi集成

2023-07-12 18:00 作者:GeaFlow  | 我要投稿

GeaFlow(品牌名TuGraph-Analytics) 已正式開源,歡迎大家關(guān)注!?。g迎給我們 Star 哦!

GitHub?? https://github.com/TuGraph-family/tugraph-analytics

更多精彩內(nèi)容,關(guān)注我們的博客 https://geaflow.github.io/


表模型現(xiàn)狀與問題

關(guān)系模型自1970年由埃德加·科德提出來以后被廣泛應(yīng)用于數(shù)據(jù)庫和數(shù)倉等數(shù)據(jù)處理系統(tǒng)的數(shù)據(jù)建模。關(guān)系模型以表作為基本的數(shù)據(jù)結(jié)構(gòu)來定義數(shù)據(jù)模型,表為二維數(shù)據(jù)結(jié)構(gòu),本身缺乏關(guān)系的表達(dá)能力,關(guān)系的運(yùn)算通過Join關(guān)聯(lián)運(yùn)算來處理。表模型簡單且易于理解,在關(guān)系模型中被廣泛使用。

隨著互聯(lián)網(wǎng)信息技術(shù)的發(fā)展,處理的數(shù)據(jù)規(guī)模越來越大,大數(shù)據(jù)系統(tǒng)應(yīng)運(yùn)而生。表模型作為重要的數(shù)據(jù)模型依然被Spark/Hive/Flink等主流大數(shù)據(jù)引擎所采用,表模型之上的SQL查詢語言也被廣泛使用在大數(shù)據(jù)分析處理中。然而隨著應(yīng)用場景的豐富和處理數(shù)據(jù)規(guī)模的變大,表模型的問題也越來越多的暴露出來。


- 首先,關(guān)系運(yùn)算成本高

表模型本身缺乏關(guān)系描述能力,只能通過Join運(yùn)算來完成關(guān)系的計算。無論在批處理系統(tǒng)里面還是流計算系統(tǒng)中,Join都是非常重的操作,需要大量的數(shù)據(jù)shuffle和計算開銷,在流計算系統(tǒng)中,還需要存放左右兩張流表的歷史狀態(tài),存儲消耗極高。

- 其次,數(shù)據(jù)冗余時效性低

數(shù)倉分析的場景為了提高數(shù)據(jù)查詢性能,往往將多張表提前物化成一張大寬表。大寬表雖然可以加速查詢性能,然而其數(shù)據(jù)膨脹和冗余非常嚴(yán)重。需要將多張表Join成一張表,表與表之間一對多的關(guān)聯(lián)關(guān)系導(dǎo)致一張表的數(shù)據(jù)通過關(guān)聯(lián)會放大多份,造成數(shù)據(jù)量指數(shù)級膨脹和冗余。而且寬表一旦生成,如需添加新的表進(jìn)來,需要重新生成新寬表,計算開銷大,不靈活。另外,基于Join方式成本高,基于寬表方式很難實(shí)現(xiàn)數(shù)倉實(shí)時化。

- 最后,無法支持復(fù)雜關(guān)系查詢

基于SQL join方式很難描述復(fù)雜關(guān)系查詢,比如查詢一個人4度以內(nèi)所有好友或者查詢最短路徑等。這些復(fù)雜關(guān)聯(lián)關(guān)系通過SQL表的join方式很難描述。


圖模型解決方案

圖是關(guān)系的天然描述

圖是對關(guān)系的一種天然描述,圖模型是一種以點(diǎn)和邊作為基本單元定義的數(shù)據(jù)模型天然可以描述關(guān)聯(lián)關(guān)系。在圖模型里面以點(diǎn)代表實(shí)體,以邊代表關(guān)系。比如在人際關(guān)系圖里面,每一個人可以用一個點(diǎn)來表示,人和人之間的關(guān)系通過邊來表示,人與人之間可以存在各種各樣的復(fù)雜關(guān)系,這些關(guān)系都可以通過不同的邊來表示。所以圖模型里面天然就包含關(guān)系,是對關(guān)系最自然的表達(dá)。


圖是關(guān)系的物化

圖模型中本身包含點(diǎn)邊關(guān)系的定義,在數(shù)據(jù)存儲層面會按照點(diǎn)邊關(guān)系存放數(shù)據(jù),點(diǎn)和其鄰邊會存儲在一起。所以圖存儲層面對關(guān)系做了物化,相比與表的Join方式,可以獲取更好的關(guān)聯(lián)計算性能。相比寬表的關(guān)系物化方式,由于圖結(jié)構(gòu)本身的點(diǎn)邊聚合性,不會出現(xiàn)寬表展開導(dǎo)致的數(shù)據(jù)膨脹,其存儲空間會更小,如下圖所示。


圖加速數(shù)據(jù)查詢

利用圖的關(guān)系物化的能力,可以加速關(guān)系運(yùn)算的查詢,如下例子:

學(xué)生、課程和教師三個實(shí)體表,實(shí)體之間存在選課(selectCourse)、考試(examination)和教學(xué)(teach)三種關(guān)系.這些實(shí)體之間的關(guān)系查詢可以通過圖查詢來表示。



- 查詢數(shù)學(xué)考試成績前十的學(xué)生及其分?jǐn)?shù)

對應(yīng)圖查詢:


- 查詢選課人數(shù)最多的老師Top 3

對應(yīng)圖查詢:


圖模型和表模型關(guān)系

圖模型本身包含點(diǎn)數(shù)據(jù)集和邊數(shù)據(jù)集,點(diǎn)邊數(shù)據(jù)集來源于表數(shù)據(jù),比如Hive表、Hudi表等。所以,圖模型是表模型的超集,是對表模型的補(bǔ)充和完善。圖模型可以起到類似寬表的作用,物化表的關(guān)系,同時能更靈活的定義關(guān)系,消耗更小的存儲開銷.


GeaFlow和Hudi集成

GeaFlow(品牌名TuGraph-Analytics)是螞蟻?zhàn)匝械姆植际綄?shí)時圖計算引擎,兼顧離線圖計算能力。GeaFlow以圖模型作為基本的數(shù)據(jù)模型,在圖模型基礎(chǔ)之上定義了一套圖計算的編程接口,同時和流式處理能力相結(jié)合,實(shí)現(xiàn)了流式圖計算的能力。在DSL語言層面,GeaFlow將表處理語言SQL和圖查詢語言ISO/GQL相結(jié)合,實(shí)現(xiàn)了圖表一體的數(shù)據(jù)分析能力。通過GeaFlow圖計算的能力,很好的解決了大規(guī)模數(shù)據(jù)關(guān)聯(lián)關(guān)系計算的問題。

Hudi是業(yè)界熱門的數(shù)據(jù)湖格式,旨在解決數(shù)據(jù)湖中數(shù)據(jù)的變更管理問題。Hudi使用了一種基于日志的存儲方式,可以支持?jǐn)?shù)據(jù)的實(shí)時增量、刪除和更新,并且能夠保證數(shù)據(jù)的一致性和可靠性。Hudi的核心思想是將數(shù)據(jù)劃分成小的數(shù)據(jù)塊,每個數(shù)據(jù)塊都包含了數(shù)據(jù)的變更歷史,可以通過增量方式和全量方式讀取和寫入數(shù)據(jù)。Hudi支持多種數(shù)據(jù)格式,包括Parquet、ORC、CSV等,并且可以與Hadoop、Spark、Flink等大數(shù)據(jù)處理框架無縫集成,可用于數(shù)據(jù)湖的建設(shè)和數(shù)據(jù)管理。Hudi的出現(xiàn)大大簡化了數(shù)據(jù)湖的數(shù)據(jù)變更管理和數(shù)據(jù)處理流程,是一個非常優(yōu)秀的數(shù)據(jù)管理框架。

GeaFlow支持和多種數(shù)據(jù)源集成,包括Hudi。利用GeaFlow圖計算的能力,可以對Hudi數(shù)據(jù)湖數(shù)據(jù)做關(guān)系物化,加速DWD層的查詢性能和時效性,同時也可以基于圖數(shù)據(jù)做更多復(fù)雜的圖算法分析。



以下為GeaFlow使用Hudi構(gòu)圖,然后進(jìn)行4度環(huán)路查找和SSSP算法計算的例子:

圖定義

我們首先需要定義張圖,使用Create Graph語法定義如下:

這張圖定義包含點(diǎn)表person和邊表knows. 點(diǎn)表person定義了點(diǎn)的屬性信息和id字段,id字段唯一標(biāo)識圖里面的點(diǎn),為點(diǎn)表的主鍵,通過**ID **關(guān)鍵字來定義。邊表knows里面定義好友關(guān)系,srcId為關(guān)系的起點(diǎn),通過**SOURCE ID**關(guān)鍵字定義;targetId為關(guān)系的目標(biāo)點(diǎn),通過**DESTINATION ID**關(guān)鍵字定義。weight字段則為邊的一個屬性字段。一張圖的點(diǎn)邊或者邊表可以包含零個或者多個屬性字段。

Hudi表定義

首先我們需要定義一張Hudi點(diǎn)表和Hudi邊表:

GeaFlow是一個流式圖計算引擎,數(shù)據(jù)源按照window size切分成一系列的window, 引擎會依次處理這些window的數(shù)據(jù)。如果window size設(shè)置為-1,則代表一個All Window,即一次全量處理所有數(shù)據(jù)。對于Hudi這樣的批數(shù)據(jù)源接口,需要設(shè)置window size為-1來處理。

構(gòu)圖

構(gòu)圖是將外部數(shù)據(jù)表的數(shù)據(jù)寫入到圖里面,可以通過Insert語句來完成。如下語句,分布將hudi表里面的數(shù)據(jù)寫入到friend圖的person表和knows表里面,完成圖數(shù)據(jù)的構(gòu)建。

圖計算

接下來是對構(gòu)建好的圖數(shù)據(jù)做圖計算,我們以SSSP(單源最短路徑)和四度環(huán)路檢查為例進(jìn)行介紹:

首先需要定義一個結(jié)果表result來存放計算結(jié)果,然后通過**USE GRAPH**命令來設(shè)置當(dāng)前計算用到的圖。最后通過CALL語句來執(zhí)行SSSP算法(其中SSSP算法的入?yún)槠鹗键c(diǎn)id), 并將計算結(jié)果寫入結(jié)果表。

四度環(huán)路匹配如下語句,通過Match匹配一個4度環(huán)路的pattern,然后將結(jié)果寫出結(jié)果表.

總結(jié)

本文主要分析了表模型的現(xiàn)狀和問題,然后介紹了圖模型在處理關(guān)系運(yùn)算上的優(yōu)勢,接著介紹了圖計算引擎GeaFlow和數(shù)據(jù)湖格式hudi的整合,利用圖計算引擎加速數(shù)據(jù)湖上的關(guān)系運(yùn)算.



GeaFlow(品牌名TuGraph-Analytics) 已正式開源,歡迎大家關(guān)注!?。?/p>

歡迎給我們 Star 哦!

Welcome to give us a Star!

GitHub?? https://github.com/TuGraph-family/tugraph-analytics

更多精彩內(nèi)容,關(guān)注我們的博客 https://geaflow.github.io/?


圖加速數(shù)據(jù)湖分析-GeaFlow和Hudi集成的評論 (共 條)

分享到微博請遵守國家法律
桃园县| 芦山县| 友谊县| 苗栗市| 西乡县| 聂荣县| 大渡口区| 花垣县| 双桥区| 万年县| 南通市| 内丘县| 富宁县| 莲花县| 晋中市| 河池市| 林口县| 工布江达县| 广东省| 佛坪县| 琼中| 鄯善县| 东丽区| 仁寿县| 大石桥市| 丹棱县| 枝江市| 大厂| 麟游县| 连城县| 绵阳市| 台东市| 江口县| 彩票| 饶河县| 正镶白旗| 杂多县| 双牌县| 白水县| 观塘区| 邵武市|