視訊回顧 | 面對上億級別的使用者行為資料,如何做到秒級響應分析

語言: CN / TW / HK

節前,Kyligence 的資深講師為大家帶來了《面對上億級別的使用者行為資料,如何做到秒級響應分析》線上分享,介紹瞭如何使用 Apache Kylin 進行使用者行為分析。錯過直播的同學可以直接點選 【閱讀原文】 檢視視訊回放。

(以下為現場Q&A)

Kylin 的使用

Q: Kylin 重新整理的最小單位是什麼? 另外資料來源可以用 MySQL 嗎? 

A: Kylin 最小的重新整理單位是 Segment,資料來源可以選擇 MySQL

Q: 請問 Kylin 如何獲取明細資料呢? 

A: 首先通過 intersect_value 計算出使用者 UID,之後根據 UID 查詢明細

Q: Kylin 3.0支援實時了,如何做資料刪除和更新,歷史資料如何處理?能介紹一下嗎?

A: Kylin 的實時功能支援 lambda 模式,使用者在資料經過 ETL 後,需要更新 cube 的資料,可以通過建立一個 lambda 表,通過重新整理 lambda 表,來實現 cube 資料的更新具體用法參考我們的教程: 

http://kylin.apache.org/docs/tutorial/lambda_mode_and_timezone_realtime_olap.html 

Q: Hive 表的其中一個欄位是陣列,Kylin 可以將這個欄位拆分出來麼?

A: Kylin 不支援這個功能,只支援基礎資料型別

Q: Kylin 的結果如何通過 PowerBI 展示,需要什麼支援的? 

A: 通過 PowerBI 使用開源 Kylin,可以裝 Kylin ODBC Driver,使用 PowerBI  通用 ODBC 介面,開源 Kylin 只有使用 PowerBI import 模式(PowerBI有 import + direct query 兩種模式),商業版 Kyligence 兩種模式都支援

Q: 在 BI 分析工具中還能繼續做篩選嗎?

A: 現在 BI 工具不支援在同一個列上做多個篩選器,行為分析,現有的 BI 工具支援不完善,需要做自研開發

Q: UDAF 的實現有參考文件嗎? 

A: 請參考 Calcite 官方文件

Q: 假設表結構修改了,Kylin 能感知到嗎? 

A: 需要手動重新整理同步表結構,但是如果 cube 已經有資料,是不能同步的。 

Q: model 和 cube 的區別是什麼呀?

A: 比較像面向物件中的 Class 類與類例項之間的關係,一個Class 類可以 new 出很多個例項,同樣的一個 model 可以建立很多個 cube,model 是模型,cube 是具體的預計算方式和結果 

Kylin 的效能優化

Q: 這個函式的使用對於使用者基數過大的情況是否會存在資料膨脹過大的情況?

A: 對於使用者基數高的不會,對於維度基數高的會存在,但可以通過設定必要維度,層級維度與聯合維度進行控制 

Q: Kylin 自動化構建是不是也需要外部指令碼或者程式定時排程?

A: 需要外部排程

Q: 寬表是 cube 裡的一個關聯表,還是最終 cube 儲存成了一個寬表? 

A: 所謂寬表是資料來源上的寬表,Kylin cube 設計可以只有一個事實表,也可以是星型模型 

Q: 大規模資料中,如果字典表更新了之前 cube 跑過的資料怎麼辦呢,有麼有辦法可以快速重新構建的辦法? 

A: 目前只能重新構建 

Q: union 前後的 select 查詢是序列執行還是並行執行的?

A: 目前還是序列方式 

Q: HBase 裡存的是維表的快照嗎?如果維表更新了又要重跑怎麼辦? 

A: HBase 中存放的是 Cuboid 資料,如果維表更新了,需要重新構建維表的儲存是有兩種方式除了HBase 還有 meta store,具體請參考官網說明。如果在建模時有維度表的欄位選為 normal,那麼維表更新是必須重新整理 cube ,如果維表的欄位全部為 derived,那麼是不需要重新整理 cube

Q: Kylin 的 rowkey 應該是多維度組合生成的,HBase 對點查支援的好,但是大範圍維度查詢不友好,Kylin 在查詢多維度組合的 Cuboid 時,涵蓋很多條件時會不會很慢? 

A: 不一定,這個要看 rowkey 的設計,在設計 rowkey 的時候最好能結合查詢,把經常查尋的欄位和基數比較大的欄位往前放,還可以通過 shard 欄位切分資料做相應的優化

intersect_count 函式的使用

Q: 用 intersect_count 和直接在 where 裡寫 and 和 or 條件的效能是一樣的麼?

A: 有where 篩選條件,效率會高一點.如果有 where 條件,會首先進行一次過濾,之後再執行 intersect_count 

Q: Tableau、Power BI 查詢 Kylin 的話也有 intersect_count 函式嗎?

A: Tableau、Power BI 沒有內建 intersect_count 函式,但是可以通過直接查詢模式使用 

往期案例與實踐

Kylin's Github Repo 傳送門

↓↓↓

https://github.com/apache/kylin

喜歡:heart:Kylin 的話,別忘了 Star :star2:一下喲~