【大數據面試】【數倉項目】其他知識點:行為數倉、業務數倉、拉鏈表、即席查詢


一、用戶行為數倉.

1、數倉分層架構圖

 2、埋點行為數據基本格式(基本字段)

"ap":"xxxxx",//項目數據來源 app pc
"cm": {  //公共字段
      "mid": "", // (String) 設備唯一標識  "uid": "", // (String) 用戶標識
        "vc": "1",  // (String) versionCode,程序版本號
        "vn": "1.0",  // (String) versionName,程序版本名
        "l": "zh",  // (String) 系統語言
        "sr": "", // (String) 渠道號,應用從哪個渠道來的。
        "os": "7.1.1",  // (String) Android系統版本
        "ar": "CN",  // (String) 區域
        "md": "BBB100-1",  // (String) 手機型號
        "ba": "blackberry", // (String) 手機品牌
        "sv": "V2.2.1",  // (String) sdkVersion
        "g": "",  // (String) gmail
        "hw": "1620x1080", // (String) heightXwidth,屏幕寬高
        "t": "1506047606608",  // (String) 客戶端日志產生時的時間
        "nw": "WIFI", // (String) 網絡模式
        "ln": 0,  // (double) lng經度
        "la": 0  // (double) lat 緯度
    },
"et":  [  //事件
            {
                "ett": "1506047605364",  //客戶端事件產生時間
                "en": "display",  //事件名稱  啟動和事件日志是根據事件名稱的不同
                "kv": {  //事件結果,以key-value形式自行定義
                    "goodsid": "236",
                    "action": "1",
                    "extend1": "1",
"place": "2",
"category": "75"
                }
            }
        ]
}

3、項目經驗總結

MySQL的高可用

存儲元數據,搭建時要進行高可用HA

4、日期函數

1)date_add、date_sub函數(加減日期)
2)next_day函數(周指標相關)
3)date_format函數(根據格式整理日期)
4)last_day函數(求當最后一天日期)
5)collect_set函數
6)get_json_object解析json函數

5、Union與Union all區別

1)union會將聯合的結果集去重,效率較union all差
2)union all不會對結果集去重,所以效率高

6、Shell中單引號和雙引號區別

#!/bin/bash
do_date=$1

echo '$do_date'    #不取值
echo "$do_date"   #取值
echo "'$do_date'" #誰在最外面,誰起作用
echo '"$do_date"' #不起作用
echo `date` #執行命令

7、Tez引擎--Mr/tez/spark區別

Mr引擎:多job串聯,基於磁盤,落盤的地方比較多。雖然慢,但一定能跑出結果。一般處理,周、月、年指標。
Spark引擎:雖然在Shuffle過程中也落盤,但是並不是所有算子都需要Shuffle,尤其是多算子過程,中間過程不落盤 DAG有向無環圖。 兼顧了可靠性和效率。一般處理天指標
Tez引擎:完全基於內存。 注意:如果數據量特別大,慎重使用。容易OOM。一般用於快速出結果,數據量比較小的場景。

8、需求邏輯

用戶活躍

用戶新增:活躍用戶表 left join 用戶新增表

1天留存

最近七天內連續三天活躍

二、業務數倉

1、電商常識

SKU:一台銀色、128G內存的、支持聯通網絡的iPhoneX-庫存量具體產品
SPU:iPhoneX--produce
Tm_id:品牌Id蘋果,包括IPHONE,耳機,mac等

2、電商業務流程

 3、業務表關鍵字段

4、MySql中表的分類

實體表,維度表,事務型快照事實表,周期型快照事實表、累積型事實表

5、同步策略

實體表,維度表統稱維度表,每日全量或者每月(更長時間)全量
事務型事實表:每日增量
周期性事實表:拉鏈表

【新增、新增和變化、全量】

新增:sqoop --query "select * from table where createtime = now" and 命令

新增和變化:sqoop --query "select * from table where createtime = now or operatetime = now" and 命令

全量:sqoop --query "select * from table where 1= 1" and 命令

6、3范式(數倉建模必問)

7、數據模型

星型模型(一級維度表),雪花(多級維度),星座模型(星型模型+多個事實表)

三、拉鏈表

1、是否做過拉鏈表

用戶做過

2、場景:一張表,一年修改一次

緩慢變化維的場景,用戶表很典型

3、步驟-left join后得到臨時表,拼接后修改結束日期

 四、即席查詢

1、查詢工具

 架構師的技術選型

Druid:支持實時(類似flink)和批處理(類似spark),處理速度快,但只支持單表,快的原因:行數據按照時間進行預聚合,列數據采用列式存儲

新版本:clickhouse,是druid的競品,支持多表

Kylin:預計算,提前算好結果,寫入HBase,后續相當於查詢HBASE。速度也快

presto:基於內存,速度快,但容易出現OOM;此外,支持的數據源最多(kafka、端口號等)

Impala:同上,支持的數據源少,查詢性能比presto更高

生產環境:如果是CDH框架,選擇默認集成的impala,如果是Apache,選擇presto

spark:跑每天的定時任務,基於內存和磁盤

es:用於存儲和查詢,查詢速度比較快,不擅長於join操作,一般用於沒有大數據集群場景,如果有集群,一般用於存儲用戶畫像標簽(晚上、喝酒)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM