ods:数据保持与业务库与业务日志相同
数据存储格式与压缩方式的选择
形式 | 格式 | 压缩方式 | 数据管理方式(hive) | |
业务库 | 数据库 | orc | snappy | 管理表 |
业务日志 | kafka | orc | snappy | 管理表 |
log | textfile | gz | 外部表 |
表名的设计,根据你们的业务要求,或者标准的方式
{业务库名}_{表名}_{同步周期}{同步方式:全量或者增量}
相关的性能与选择,参看(116条消息) 压缩格式gzip/snappy/lzo/bzip2 比较与总结_zzhongcy的博客-CSDN博客_snappy压缩比
压缩格式 | codec类 | 算法 | 扩展名 | 多文件 | splitable | native | 工具 | hadoop自带 |
---|---|---|---|---|---|---|---|---|
gzip | GzipCodec | deflate | .gz | 否 | 否 | 是 | gzip | 是 |
bzip2 | Bzip2Codec | bzip2 | .bz2 | 是 | 是 | 否 | bzip2 | 是 |
lzo | LzopCodec | lzo | .lzo | 否 | 是 | 是 | lzop | 否 |
snappy | SnappyCodec | snappy | .snappy | 否 | 否 | 是 | 无 | 否 |
说明:
- 压缩相关codec实现在org.apache.hadoop.io.compress包下面
- gzip算法hadoop内置支持,使用时直接处理文本数据一样,使用方便,压缩比高,缺点就是不支持split。如果压缩后文件与块大小相当,可以考虑使用gzip压缩,比如:小时原始日志压缩成gzip文件,使用方便。
- bzip2 支持split,压缩比高,支持多文件,缺点就是慢。
- lzo 压缩/解压速度也比较快,合理的压缩率;支持split(需要建索引,文件修改后需要重新建索引),支持hadoop native库,需要自己安装;
- snappy 压缩/解压速度也比较快,合理的压缩率,不支持split,支持hadoop native库,需要自己安装。可以用于map中间结果的压缩。
dwd:维度建模实事表与维度表(维度表的扩展不在这)
格式 | 压缩方式 | 数据管理方式(hive) | |
dwd | orc | 管理表 | |
dim | orc | 管理表 |
dws:数据主题域
格式 | 压缩方式 | 数据管理方式(hive) | |
dws | orc | 管理表 |
ads:业务报表(数据存储到易于业务查看的地方,如mysql,hbase,es,ck等)
各层命名方式
层 | 命名方式 |
ods | ods_{业务库}_{表名}_{同步周期}{同步方式} |
dwd dim | dwd_{业务}_{表的类型}_{同步周期}{同步方式} dim_{维度}_{表的类型}_{同步周期}{全量} |
dws | dws_{维度}_{业务}_{表的类型}_{同步周期}{同步方式} |
ads | 这个可以根据业务自定义就行 |
表的类型
表的类型 | 符号 | 描述 |
事务型 | tf | 每一个操作记录都要记录 |
周期型 | psf | 统计周期内的最终状态 |
累积型 | asf | 统计周期内状态的变化 |
同步周期
同步周期 | 符号 |
分 | min |
时 | h |
天 | d |
周 | w |
月 | m |
年 | y |
实时 | sync |
同步方式
同步方式 | 符号 |
全量 | a |
增量 | i |