0.目前看到的,ODS层和DWD层都是外部表!

1.

  1. 事实表和维度表
  1. 事务型事实表:增量更新
  2. 周期型快照事实表:不会保留所有数据,只保留固定时间间隔的数据
  3. 累积型快照事实表:累计快照事实表用于跟踪业务事实的变化。
  1. ODS层要保持大量原始数据,起到备份作用。故ODS层要创建外表分区表,使用压缩
    在企业开发中,除了自己用的临时表,创建内部表外,绝大多数场景都是创建外部表
  1. ODS层需要大量建表语句,以及读取语句。
create table (......
)
PARTITIONED BY (`dt` string) --分组依据
row format delimited fields terminated by '\t'
STORED AS
  INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'--输入文件问lzo压缩
  OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
location ‘/usr/hive/apache-hive-3.1.2/warehouse/yuntu.db/ods/ods_order_info/';--数据存放位置,一般而言是要加分区的条件作为目录区分的

ODS层读取数据第一件事是删掉旧表,建立新表的结构。但仔细一想ODS建立的全都是外部表,所以只是删除了对应关系,过去的数据是被保留的的。

  1. 数仓搭建-DWD层:1)对用户行为数据解析。2)对核心数据进行判空过滤。3)对业务数据采用维度模型重新建模,即维度退化
  1. 用到的函数
  1. get_json_object函数使用
SELECT get_json_object('[{"name":"张三","age":18,"sex":"女"},{"name":"李四","sex":"男"}]',"$[0].age");
  1. 维度表的存储格式:1.在压缩存储时间上,除Sequencefile外基本都相差无几。
     2.数据压缩比例上ORC最优,相比textfile节省了50倍磁盘空间,parquet压缩性能也较好。
     3.SQL查询速度而言,ORC与parquet性能较好,远超其余存储格式。
     综合上述各种性能指标,建议工作中原始日志写入hive的存储格式都采用ORC或者parquet格式,这和目前主流的做法一致。
  1. 每一层都分为建表和写表。而执行何种写入方式(全量表,增量表,拉链表,周期型快照表,累计型快照表......)就取决于写表的sql语句。5.1.4
  1. end
  1. END
  1. END
  1. DWD层:DWD层需构建维度模型。选择业务过程→声明粒度→确认维度→确认事实   
    应该尽可能选择最小粒度
  2. endHere

2.Shell中单引号和双引号区别:

(1)单引号不取变量值

(2)双引号取变量值

(3)反引号`,执行引号中命令

(4)双引号内部嵌套单引号,取出变量值
(5)单引号内部嵌套双引号,不取出变量值