節(jié)前,Kyligence 的資深講師為大家?guī)?lái)了《面對(duì)上億級(jí)別的用戶行為數(shù)據(jù)贪庙,如何做到秒級(jí)響應(yīng)分析》線上分享蜘犁,介紹了如何使用 Apache Kylin 進(jìn)行用戶行為分析。錯(cuò)過(guò)直播的同學(xué)可以直接點(diǎn)擊這里獲取視頻回放止邮。
(以下為現(xiàn)場(chǎng)Q&A)
Kylin 的使用
Q:Kylin 刷新的最小單位是什么? 另外數(shù)據(jù)源可以用 MySQL 嗎这橙?
A:Kylin 最小的刷新單位是 Segment,數(shù)據(jù)源可以選擇 MySQL
Q:請(qǐng)問(wèn) Kylin 如何獲取明細(xì)數(shù)據(jù)呢导披?
A:首先通過(guò) intersect_value 計(jì)算出用戶 UID,之后根據(jù) UID 查詢明細(xì)
Q:Kylin 3.0支持實(shí)時(shí)了屈扎,如何做數(shù)據(jù)刪除和更新,歷史數(shù)據(jù)如何處理撩匕?能介紹一下嗎?
A:Kylin 的實(shí)時(shí)功能支持 lambda 模式鹰晨,用戶在數(shù)據(jù)經(jīng)過(guò) ETL 后,需要更新 cube 的數(shù)據(jù),可以通過(guò)創(chuàng)建一個(gè) lambda 表模蜡,通過(guò)刷新 lambda 表漠趁,來(lái)實(shí)現(xiàn) cube 數(shù)據(jù)的更新具體用法參考我們的教程
Q:Hive 表的其中一個(gè)字段是數(shù)組,Kylin 可以將這個(gè)字段拆分出來(lái)么忍疾?
A:Kylin 不支持這個(gè)功能闯传,只支持基礎(chǔ)數(shù)據(jù)類型
Q:Kylin 的結(jié)果如何通過(guò) PowerBI 展示,需要什么支持的?
A:通過(guò) PowerBI 使用開(kāi)源 Kylin卤妒,可以裝 Kylin ODBC Driver丸边,使用 PowerBI 通用 ODBC 接口,開(kāi)源 Kylin 只有使用 PowerBI import 模式(PowerBI有 import + direct query 兩種模式)荚孵,商業(yè)版 Kyligence 兩種模式都支持
Q:在 BI 分析工具中還能繼續(xù)做篩選嗎妹窖?
A:現(xiàn)在 BI 工具不支持在同一個(gè)列上做多個(gè)篩選器,行為分析收叶,現(xiàn)有的 BI 工具支持不完善骄呼,需要做自研開(kāi)發(fā)
Q:UDAF 的實(shí)現(xiàn)有參考文檔嗎?
A:請(qǐng)參考 Calcite 官方文檔
Q:假設(shè)表結(jié)構(gòu)修改了判没,Kylin 能感知到嗎?
A:需要手動(dòng)刷新同步表結(jié)構(gòu)蜓萄,但是如果 cube 已經(jīng)有數(shù)據(jù),是不能同步的澄峰。
Q:model 和 cube 的區(qū)別是什么呀嫉沽?
A:比較像面向?qū)ο笾械?Class 類與類實(shí)例之間的關(guān)系,一個(gè)Class 類可以 new 出很多個(gè)實(shí)例,同樣的一個(gè) model 可以創(chuàng)建很多個(gè) cube,model 是模型俏竞,cube 是具體的預(yù)計(jì)算方式和結(jié)果
Kylin 的性能優(yōu)化
Q:這個(gè)函數(shù)的使用對(duì)于用戶基礎(chǔ)過(guò)大的情況是否會(huì)存在數(shù)據(jù)膨脹過(guò)大的情況绸硕?
A:對(duì)于用戶基數(shù)高的不會(huì),對(duì)于維度基數(shù)高的會(huì)存在魂毁,但可以通過(guò)設(shè)置必要維度玻佩,層級(jí)維度與聯(lián)合維度進(jìn)行控制
Q:Kylin 自動(dòng)化構(gòu)建是不是也需要外部腳本或者程序定時(shí)調(diào)度?
A:需要外部調(diào)度
Q:寬表是 cube 里的一個(gè)關(guān)聯(lián)表席楚,還是最終 cube 存儲(chǔ)成了一個(gè)寬表咬崔?
A:所謂寬表是數(shù)據(jù)源上的寬表,Kylin cube 設(shè)計(jì)可以只有一個(gè)事實(shí)表烦秩,也可以是星型模型
Q:大規(guī)模數(shù)據(jù)中垮斯,如果字典表更新了之前 cube 跑過(guò)的數(shù)據(jù)怎么辦呢,有么有辦法可以快速重新構(gòu)建的辦法?
A:目前只能重新構(gòu)建
Q:union 前后的 select 查詢是串行執(zhí)行還是并行執(zhí)行的只祠?
A:目前還是串行方式
Q:HBase 里存的是維表的快照嗎兜蠕?如果維表更新了又要重跑怎么辦?
A:HBase 中存放的是 Cuboid 數(shù)據(jù),如果維表更新了,需要重新構(gòu)建維表的存儲(chǔ)是有兩種方式除了HBase 還有 meta store铆农,具體請(qǐng)參考官網(wǎng)說(shuō)明牺氨。如果在建模時(shí)有維度表的字段選為 normal狡耻,那么維表更新是必須刷新 cube 墩剖,如果維表的字段全部為 derived猴凹,那么是不需要刷新 cube
Q:Kylin 的 rowkey 應(yīng)該是多維度組合生成的,HBase 對(duì)點(diǎn)查支持的好岭皂,但是大范圍維度查詢不友好郊霎,Kylin 在查詢多維度組合的 Cuboid 時(shí),涵蓋很多條件時(shí)會(huì)不會(huì)很慢爷绘?
A:不一定书劝,這個(gè)要看 rowkey 的設(shè)計(jì),在設(shè)計(jì) rowkey 的時(shí)候最好能結(jié)合查詢土至,把經(jīng)常查尋的字段和基數(shù)比較大的字段往前放购对,還可以通過(guò) shard 字段切分?jǐn)?shù)據(jù)做相應(yīng)的優(yōu)化
intersect_count 函數(shù)的使用
Q:用 intersect_count 和直接在 where 里寫 and 和 or 條件的性能是一樣的么?
A:有where 篩選條件,效率會(huì)高一點(diǎn).如果有 where 條件陶因,會(huì)首先進(jìn)行一次過(guò)濾,之后再運(yùn)行 intersect_count
Q:Tableau骡苞、Power BI 查詢 Kylin 的話也有 intersect_count 函數(shù)嗎?