分层

ODS(Operational Data Store)、DWD(Detail)、DWS(Summary)、ADS(Application Data Store,DM)
ODL(操作数据层)、BDL(基础数据层)、IDL(接口数据层)、ADL(应用数据层)

DWD分三模块

dwl(f) info 挖掘特征标签 标注使用去向
dwo opt
dwf flow

分隔符

HDFS中列风格符用^A(ascii码0x01)(Hive中默认就是^A),行分隔符用\n

数据同步

每日增量更新阿里方法:每天保存最新的全量版本、保留3-7天的增量快照
根据时间整天同步,防止JOIN出现改JOIN的JOIN不到,不该JOIN的缺JOIN到了

报表

DM层报表前缀

产品部:product
市场部:marketing
商务部:business
电销部:telemarketing
客服部:customer_service
财务部:finance
运营部:operation
通用:common

文档

提供SQL语句,这样可以无偏差与开发同步,并且可以用SQL语句进行校验测试数据准确性。

调度

Azkaban Project 命名 用-分割单词并且标明分层dm/user/action
例如dm-user-action-statistic

测试

从ods层抽样。第一层计算对的结果作为第二层的样本。

Spark Hive 数仓

小文件合并问题

关键点:
0、合并任务要设置spark.sql.adaptive.enabled=true
1、 触发Shuffle的SparkSQL 才能把文件数量减少,如DISTINCT和Group By 都行。
2、由于PARQUET格式。所以不能直接OVERWRITE自己。要中转下。

资料

https://cloud.tencent.com/developer/column/1494/tag-10796