日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Hologres如何支持亿级用户UV计算

發(fā)布時(shí)間:2024/8/23 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hologres如何支持亿级用户UV计算 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)介: 本文將介紹阿里云Hologres如何基于RoaringBitmap進(jìn)行UV等高復(fù)雜度計(jì)算的方案,實(shí)現(xiàn)億級(jí)用戶萬(wàn)級(jí)標(biāo)簽亞秒級(jí)分析,幫助用戶從Kylin平滑遷移到Hologres,實(shí)現(xiàn)更實(shí)時(shí)、開(kāi)發(fā)更靈活、功能更完善的多維分析能力。

背景介紹

在用戶行為分析和圈人場(chǎng)景中,經(jīng)常需要從億級(jí)甚至十億級(jí)用戶中快速篩選出符合特定標(biāo)簽的用戶統(tǒng)計(jì),很多企業(yè)會(huì)使用Apache Kylin(下文簡(jiǎn)稱Kylin)來(lái)支持這樣的場(chǎng)景。但是Apache Kylin的核心是預(yù)計(jì)算,當(dāng)遇上設(shè)計(jì)不合理的Cube,或者需求維度多的場(chǎng)景時(shí),會(huì)遇到維度爆炸,Cube構(gòu)建時(shí)間長(zhǎng),SQL函數(shù)不支持等問(wèn)題。

本文將介紹阿里云Hologres如何基于RoaringBitmap進(jìn)行UV等高復(fù)雜度計(jì)算的方案,實(shí)現(xiàn)億級(jí)用戶萬(wàn)級(jí)標(biāo)簽亞秒級(jí)分析,幫助用戶從Kylin平滑遷移到Hologres,實(shí)現(xiàn)更實(shí)時(shí)、開(kāi)發(fā)更靈活、功能更完善的多維分析能力。

Apache Kylin與Hologres的對(duì)比

對(duì)比項(xiàng)

Apache Kylin

Hologres

差異點(diǎn)

定位

MOLAP on Hadoop

Real-Time MPP Data Warehouse

-

建模方式

星型、雪花模型

寬表模型、主題模型

Hologres無(wú)需復(fù)雜建模理論和建模過(guò)程,數(shù)據(jù)導(dǎo)入即可查

核心原理

空間換時(shí)間,減少運(yùn)行時(shí)計(jì)算,預(yù)計(jì)算Cube,依賴Hadoop

并行計(jì)算、列存、向量化,充分利用多節(jié)點(diǎn),多核計(jì)算資源

Hologres沒(méi)有存儲(chǔ)爆炸問(wèn)題,無(wú)需預(yù)構(gòu)建等待

運(yùn)維方式

依賴YARN,HBase,ZK等,外部依賴多

計(jì)算存儲(chǔ)分離,彈性伸縮,升級(jí)平滑,無(wú)外部依賴

Hologres托管式運(yùn)維,運(yùn)維簡(jiǎn)單,無(wú)需Hadoop技能

使用場(chǎng)景

固定報(bào)表,固定維度組合,固定指標(biāo)服務(wù),秒級(jí)響應(yīng)

敏捷自助報(bào)表、自助式分析、探索式分析、自助取數(shù)、在線數(shù)據(jù)服務(wù),秒級(jí)響應(yīng)

Hologres分析更敏捷,無(wú)限制,支持完善的SQL Join,嵌套查詢,窗口函數(shù)等

查詢接口

自定義JDBC,ODBC,有限SQL能力

兼容PostgreSQL,標(biāo)準(zhǔn)JDBC、ODBC,支持標(biāo)準(zhǔn)SQL

Hologres兼容開(kāi)源生態(tài),SQL標(biāo)準(zhǔn)

開(kāi)發(fā)效率

依賴于建模人員的熟練度,掌握Kylin的復(fù)雜建模技巧

針對(duì)“表”設(shè)計(jì),概念簡(jiǎn)單

Hologres上手容易,學(xué)習(xí)門檻低

數(shù)據(jù)時(shí)效性

T+1,加工流程長(zhǎng),數(shù)據(jù)修正慢,模型修改成本非常高

實(shí)時(shí),寫(xiě)入即可查,數(shù)據(jù)可更新,模型可變更

Hologres T+0,全實(shí)時(shí)

使用Hologres方案的收益:實(shí)時(shí)、靈活、簡(jiǎn)單

基于上述的比較,我們看到Kylin和Hologres擁有一些共同的場(chǎng)景:海量數(shù)據(jù)交互式分析、亞秒級(jí)響應(yīng)、橫向擴(kuò)展能力。Kylin有很多優(yōu)點(diǎn),包括:最小化查詢開(kāi)銷,以點(diǎn)查的性能完成多維分析,查詢性能更穩(wěn)定,利用Bitmap支持全局精確去重。同時(shí)也發(fā)現(xiàn)了一些Kylin的使用難點(diǎn),包括:建模復(fù)雜(主要由IT團(tuán)隊(duì)負(fù)責(zé)建模),Cube膨脹(存儲(chǔ)成本高),構(gòu)建Cube時(shí)間長(zhǎng)(業(yè)務(wù)不實(shí)時(shí),構(gòu)建任務(wù)資源消耗大),模型不可變(業(yè)務(wù)不敏捷),SQL支持能力弱(固定的Join連接條件、有限的SUM COUNT算子,BI兼容度低,SQL協(xié)議不標(biāo)準(zhǔn)),可擴(kuò)展能力弱(UDF少)。

?

遷移到Hologres之后,可以獲得的收益包括:建模簡(jiǎn)單(面向表,DWD&DWS),SQL能力強(qiáng)(兼容PostgreSQL11,支持Ad-Hoc Query),數(shù)據(jù)鏈路實(shí)時(shí)(寫(xiě)入即可見(jiàn)),運(yùn)維簡(jiǎn)單(無(wú)Hadoop依賴)

?

如何從Kylin遷移到Hologres

  • 架構(gòu)調(diào)整:從Hadoop/HBase架構(gòu),調(diào)整到MPP數(shù)據(jù)倉(cāng)庫(kù)Hologres,去Hadoop,ZK等依賴
  • 建模上:從面向指標(biāo)的多維建模,調(diào)整為面向表的DWD、DWS分層建模,DWD為主,性能敏感時(shí)補(bǔ)充DWS甚至ADS,關(guān)注Query SLA,避免超大Query,通過(guò)基礎(chǔ)聚合結(jié)果集作為輕量匯總的DWS,滿足95%場(chǎng)景。
  • 學(xué)習(xí)上:學(xué)習(xí)Cube優(yōu)化技巧到學(xué)習(xí)Hologres索引設(shè)計(jì)、查詢優(yōu)化、資源監(jiān)控
  • 存儲(chǔ)上:從單一的HBase存儲(chǔ),到冷熱數(shù)據(jù)分層存儲(chǔ)(Hologres+MaxCompute)
  • 場(chǎng)景上:通過(guò)Hologres提供更敏捷、更靈活的自助式分析,加速數(shù)據(jù)產(chǎn)品創(chuàng)新
  • 分工上:IT從關(guān)注建模的構(gòu)建質(zhì)量到關(guān)注平臺(tái)的開(kāi)發(fā)效率,更多服務(wù)業(yè)務(wù)價(jià)值

實(shí)現(xiàn)原理

在場(chǎng)景遷移之前,首先介紹以下精確去重和累加計(jì)算在Kylin和Hologres上不同的實(shí)現(xiàn)方式,以便于根據(jù)不同場(chǎng)景選用不同的方式去遷移原有業(yè)務(wù)。

如下圖所示,Kylin根據(jù)維度和度量,進(jìn)行多次預(yù)計(jì)算生成2^n個(gè)cuboid(n為維度數(shù)量)來(lái)構(gòu)建cube。查詢時(shí),根據(jù)查詢的維度,映射到相應(yīng)的cuboid得到度量結(jié)果。Cube相比原始明細(xì)數(shù)據(jù)會(huì)有N倍的數(shù)據(jù)膨脹,且非常不靈活。

?

?

對(duì)于Hologres來(lái)說(shuō),去做精確去重和累加計(jì)算則更為靈活:

  • 明細(xì)數(shù)據(jù)不多或者QPS要求不高的場(chǎng)景:直接利用SQL語(yǔ)句從明細(xì)表中對(duì)統(tǒng)計(jì)維度進(jìn)行Group by,對(duì)指標(biāo)用聚合函數(shù)計(jì)算度量結(jié)果。這種方法可以獲得最大的靈活性,能充分利用Hologres強(qiáng)大的計(jì)算能力,可進(jìn)行任意復(fù)雜的查詢,實(shí)現(xiàn)數(shù)億條記錄的毫秒級(jí)分析。

?

  • 數(shù)據(jù)量大且高QPS場(chǎng)景:在Hologres中將明細(xì)表按照基礎(chǔ)維度最細(xì)粒度做Group by,對(duì)指標(biāo)進(jìn)行預(yù)聚合運(yùn)算生成一份DWS表。查詢時(shí)對(duì)DWS表按照統(tǒng)計(jì)維度Group by,對(duì)指標(biāo)的預(yù)聚合結(jié)果進(jìn)行聚合計(jì)算即可。通過(guò)DWS層,極大的減少數(shù)據(jù)量,從而實(shí)現(xiàn)高QPS的查詢要求。相比于DWD(明細(xì)層),DWS層的數(shù)據(jù)量正常只有DWD層的1/100甚至更少,這點(diǎn)類似于Kylin中的Base Cuboid結(jié)構(gòu)。

?

  • 當(dāng)然在Hologres上也可以采用類似Kylin構(gòu)建Cube的方式:將明細(xì)表按照所需的各種維度組合做Group by,或者Cube、Rollup、Grouping Sets等原生表達(dá)式,對(duì)指標(biāo)進(jìn)行預(yù)聚合運(yùn)算。但是同樣也會(huì)存在數(shù)據(jù)膨脹問(wèn)題,一般情況下按照上述方案即可。

?

綜上所述,Kylin對(duì)可累加指標(biāo)或精確去重指標(biāo)的查詢時(shí),需構(gòu)建Cube才能獲取較高性能,這將引入額外的預(yù)計(jì)算和數(shù)據(jù)膨脹。而Hologres則更為靈活:

    • 對(duì)于DWD層數(shù)據(jù)量不大或者查詢QPS要求不高的場(chǎng)景,無(wú)需預(yù)計(jì)算,可直接在DWD層上進(jìn)行查詢,即可獲得很好的性能與最大的靈活性;
    • 對(duì)于DWD層數(shù)據(jù)量較大且有高QPS查詢的場(chǎng)景,可根據(jù)基礎(chǔ)維度進(jìn)行一次預(yù)計(jì)算,并只生成一份DWS表,查詢時(shí)按需選取維度查詢即可。不會(huì)引入過(guò)多的預(yù)計(jì)算和數(shù)據(jù)膨脹問(wèn)題。

?

本文下面將會(huì)介紹基于Hologres的DWS層構(gòu)造和查詢方案。

遷移可累加指標(biāo)

  • 明細(xì)數(shù)據(jù)導(dǎo)入Hologres,數(shù)據(jù)結(jié)構(gòu)采用原始Hive中的事實(shí)表、維度表結(jié)構(gòu),可以通過(guò)“DataWorks數(shù)據(jù)集成批量同步”完成數(shù)據(jù)遷移。
  • 數(shù)據(jù)源數(shù)據(jù)對(duì)應(yīng)DWD層,包含明細(xì)數(shù)據(jù)和維度數(shù)據(jù),如果數(shù)據(jù)是行為數(shù)據(jù),根據(jù)日期字段建成分區(qū)表,如果是訂單數(shù)據(jù),不需要分區(qū)表。
  • 對(duì)于QPS要求不高的場(chǎng)景:DWD表通過(guò)JDBC、ODBC暴露給BI應(yīng)用。
  • 對(duì)于QPS要求高的場(chǎng)景:繼續(xù)加工DWD生成DWS表,在Hologres中,針對(duì)Cube的連接條件,生成基礎(chǔ)聚合表BasicSummaryTable,如Kylin中 Fact A left join Fact B,指標(biāo):Sum(a), count(b),Hologres中執(zhí)行 insert into BasicSummaryTable(col1, col2, ..., coln, sum_a, count_b) select col1, col2, ..., coln, sum(a), count(b) from A left join b group by col1, col2, ..., coln. 結(jié)果保存為BasicSummaryTable表。
  • Hologres通過(guò)JDBC、ODBC暴露BasicSummaryTable表給BI應(yīng)用。
  • ?

    DWS層的構(gòu)造中,最重要的就是各種度量數(shù)據(jù)(指標(biāo))的聚合,需要保證各指標(biāo)都是可累計(jì)的。對(duì)于SUM、COUNT、MIN、MAX、AVG(可通過(guò)保留兩個(gè)字段:sum和count來(lái)解決),指標(biāo)的可累計(jì)是非常簡(jiǎn)單的。

    但對(duì)于COUNT DISTINCT類的指標(biāo)(需要精確去重的指標(biāo),例如UV),也需要保證在DWS中,這個(gè)指標(biāo)是可累計(jì)的,可通過(guò)Hologres原生支持的RoaringBitmap數(shù)據(jù)類型來(lái)進(jìn)行計(jì)算和保存。

    ?

    遷移不可累加指標(biāo)(精確去重場(chǎng)景)

    下面通過(guò)一個(gè)案例介紹Hologres中通過(guò)DWS來(lái)計(jì)算大時(shí)間范圍的PV、UV的最佳實(shí)踐。

    PV (Page View): 字面含義頁(yè)面訪問(wèn)量,比如一天內(nèi)頁(yè)面的累計(jì)訪問(wèn)量。其實(shí)也可引申為某段時(shí)間內(nèi)某個(gè)指標(biāo)的累加量。比如:雙十一期間某件商品的點(diǎn)擊量,活動(dòng)促銷期間某個(gè)地區(qū)的訂單量等。

    ?

    UV (Unique Visitor) : 訪問(wèn)網(wǎng)頁(yè)的自然人,如果有20個(gè)人一天訪問(wèn)某個(gè)頁(yè)面100次,這一天就是20個(gè)UV??梢砸隇槟扯螘r(shí)間內(nèi)某個(gè)指標(biāo)精確去重后的量。

    ?

    PV和UV是分析場(chǎng)景中比較重要的兩個(gè)指標(biāo),下面將以T+1離線場(chǎng)景為案例,進(jìn)行PV UV計(jì)算的介紹。

    案例背景

    每天有幾億條數(shù)據(jù),客戶總量千萬(wàn)級(jí),每日UV在百萬(wàn)級(jí),需要T+1根據(jù)十個(gè)左右維度(支持維度間任意組合)查詢一天,一周,或者一個(gè)月甚至半年期間相應(yīng)的用戶數(shù)去重統(tǒng)計(jì)信息,得出用戶數(shù)精確去重指標(biāo)UV,以及訪問(wèn)量PV。

    ?

    一般方式的UV PV計(jì)算

    如果不采取任何預(yù)聚合運(yùn)算,上述場(chǎng)景計(jì)算用戶數(shù)精確去重指標(biāo)UV和訪問(wèn)量PV,SQL如下:

    select count(distinct uid) as uv, count(1) as pv from src_t group by dim1, dim2where ymd ='20210426';select count(distinct uid) as uv, count(1) as pv from src_t group by dim1, dim5, dim9where ymd like '202103%'; --查詢區(qū)間為3月份--group by的字段是固定維度的中任意維度的組合 --where 過(guò)濾的區(qū)間范圍 從一天到半年不等--因此有多少維度和時(shí)間的組合需求,就需要查詢多少個(gè)這樣count distinct sql,每條在查詢時(shí)都需要大量計(jì)算

    這種方式下,根據(jù)查詢區(qū)間,每次查詢要對(duì)幾億條到幾十億甚至幾百億條數(shù)據(jù)進(jìn)行多個(gè)維度的Group by,然后再使用COUNT DISTINCT進(jìn)行精確去重,會(huì)產(chǎn)生大量的數(shù)據(jù)交換計(jì)算,實(shí)時(shí)地得到結(jié)果需要一定量的計(jì)算資源,大大增加用戶的成本。

    ?

    基于Bitmap方式計(jì)算精確去重

    Hologres內(nèi)置Bitmap類型,通過(guò)計(jì)算一定維度組合條件下的Bitmap結(jié)果集,把維度的所有組合生成預(yù)計(jì)算的結(jié)果表,簡(jiǎn)單原理如下:

    查詢時(shí),根據(jù)查詢時(shí)的維度,查詢對(duì)應(yīng)的預(yù)計(jì)算結(jié)果表對(duì)桶進(jìn)行聚合運(yùn)算即可達(dá)到亞秒級(jí)查詢。

    --計(jì)算bitmapinsert into result_t select RB_BUILD_AGG(uid) as uv_bitmap, count(1) as pvfrom src_tgroup by dim, ymd; --存在跨天查詢的需求,日期也必須加到group by維度中--查詢時(shí) select RB_CARDINALITY(RB_OR_AGG(uv_bitmap)), pv from result_t where ymd = '20210426'select RB_CARDINALITY(RB_OR_AGG(uv_bitmap)), pv from result_twhere ymd >= '20210301' and ymd <= '20210331'

    ?

    后面我們將會(huì)陸續(xù)推出Hologres基于RoaringBitmap的高效UV計(jì)算最佳實(shí)踐,主要內(nèi)容如下,敬請(qǐng)期待:

    • Hologres使用RoaringBitmap實(shí)現(xiàn)高效UV計(jì)算
    • Hologres使用Flink+RoaringBitmap實(shí)現(xiàn)實(shí)時(shí)UV計(jì)算

    參考文檔

    Apache Kylin:http://kylin.apache.org/

    Kylin精確去重:https://blog.bcmeng.com/post/kylin-distinct-count-global-dict.html

    Hologres RoaringBitmap函數(shù):https://help.aliyun.com/document_detail/216945.htm

    原文鏈接

    本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

    總結(jié)

    以上是生活随笔為你收集整理的Hologres如何支持亿级用户UV计算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久一二三四区 | 国产精品久久久久久久免费大片 | 色乱码一区二区三区 | 国产最新视频在线 | 国产老熟女一区二区三区 | 久久精品激情 | 日本不卡一二三区 | 国产二区自拍 | 少妇喷水在线观看 | 九色九一 | 久久99精品久久只有精品 | 天堂在线观看视频 | 少妇一区二区三区四区 | www.日本黄 | 性av网| 中文字幕精品无码一区二区 | 啪啪免费小视频 | h视频在线看 | 高清一二三区 | 图片一区二区 | 天天操综合网 | 激情综合啪啪 | 免费小视频| 亚洲国产精品无码久久久久高潮 | 涩涩av| 久久久久99人妻一区二区三区 | 亚洲视频日韩 | 国产午夜精品一区二区 | 国产精品久久777777毛茸茸 | 1024国产精品 | 国产人人插 | 五月天综合视频 | 日韩精品乱码久久久久久 | 日韩免费一区二区 | 国产精品电影一区二区三区 | 在线看一区二区 | 精品国语对白 | 四虎影视大全 | 青青草国产在线观看 | 妺妺窝人体色www婷婷 | 中文字幕日韩精品一区 | 日韩激情在线视频 | 久久婷婷影院 | 蜜桃视频污在线观看 | 一区二区三区丝袜 | 超碰美女| 无码av天堂一区二区三区 | 中文二区 | 久国产 | 国产一区二区视频在线播放 | 亚洲欧美日韩另类 | 午夜男人的天堂 | 在线播放一区 | 中文字幕123 | 亚洲精品视频中文字幕 | 欧美黄色性生活 | 日日干日日爽 | 久久香蕉av| 日本成人激情 | 免费黄色欧美 | 免费国产黄色网址 | 久久久水蜜桃 | 成人黄色网 | 国产精品自拍偷拍视频 | 影音先锋男人的天堂 | 国产精品wwww | 午夜成人免费影院 | 欧美天天干 | 挪威xxxx性hd极品 | 青娱乐精品视频 | 久久精品5 | 国产精品对白 | 亚洲欧美一 | 欧洲金发美女大战黑人 | 美女丝袜合集 | 瑟瑟视频在线看 | 97se综合| 大吊av | 亚洲国产免费 | 国产中文欧美日韩在线 | 日本黄色特级片 | 日日躁夜夜躁白天躁晚上躁91 | 亚洲色图在线观看视频 | www.成人在线| 日韩精品视频播放 | 日韩美女视频在线观看 | 一区二区三区四区人妻 | www.插插 | 在线观看视频毛片 | 色呦呦免费视频 | 亚洲成人一区在线 | 91亚色在线观看 | 亚洲国产精品一区二区三区 | 国产福利精品在线观看 | 国产精品美女久久久久av爽 | 少妇裸体挤奶汁奶水视频 | 国产黑丝一区 | 亚洲综合区 | 男女无遮挡做爰猛烈视频 |