数仓的经验思路

ods层

经验:
1.保持数据原貌不做任何修改,起到备份数据的作用
2.创建分区表,防止后续的全表扫描,提高效率
3.可以采用lzo压缩, 减少磁盘空间的使用

相关技术:

CREATE EXTERNAL TABLE ods_event_log(`line` string)
PARTITIONED BY (`dt` string)
STORED AS
  INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'
  OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION '/warehouse/gmall/ods/ods_event_log';

创建lzo压缩索引文件:

hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DistributedLzoIndexer /warehouse/gmall/ods/ods_event_log/dt=2020-03-10

dwd层

经验:
1.对数据作清洗(清除一些脏数据,空值)
2. 进行维度退化, 尽可能的使用星型模型

相关技术:
创建表时,可以使用列式存储+lzo, 列式存储是支持切片的,可以不创建索引文件

CREATE EXTERNAL TABLE dwd_start_log(
`mid_id` string,
`user_id` string, 
`version_code` string, 
)
PARTITIONED BY (dt string)
stored as parquet
location '/warehouse/gmall/dwd/dwd_start_log/'
TBLPROPERTIES('parquet.compression'='lzo');

创建自定义函数: 可能会需要使用自定义函数

语法: temporary 是创建临时函数 , 没有的话,是创建永久函数

create [temporary] function 函数名别名 as '全类名' using jar 'hdfs://hadoop101:8020/user/hive/jars/hiveFunction-1.0-SNAPSHOT.jar'; #最后一个是自定义函数所存放的位置

注意:如果修改了自定义函数重新生成jar包怎么处理?只需要替换HDFS路径上的旧jar包,然后重启Hive客户端即可。

Guess you like

Origin blog.csdn.net/First_____/article/details/121505737