HIVE-表模型-数据清洗-数据分析

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

1.

  1. 事实表和维度表
    1. 事务型事实表:增量更新

    2. 周期型快照事实表:不会保留所有数据,只保留固定时间间隔的数据

    3. 累积型快照事实表:累计快照事实表用于跟踪业务事实的变化。

  2. 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建立的全都是外部表,所以只是删除了对应关系,过去的数据是被保留的的。

    2. 数仓搭建-DWD层:1)对用户行为数据解析。2)对核心数据进行判空过滤。3)对业务数据采用维度模型重新建模,即维度退化

      1. 用到的函数

        1. get_json_object函数使用

          SELECT get_json_object('[{"name":"张三","age":18,"sex":"女"},{"name":"李四","sex":"男"}]',"$[0].age");
        2. 维度表的存储格式:1.在压缩存储时间上,除Sequencefile外基本都相差无几。
           2.数据压缩比例上ORC最优,相比textfile节省了50倍磁盘空间,parquet压缩性能也较好。
           3.SQL查询速度而言,ORC与parquet性能较好,远超其余存储格式。
           综合上述各种性能指标,建议工作中原始日志写入hive的存储格式都采用ORC或者parquet格式,这和目前主流的做法一致。

          1. 每一层都分为建表和写表。而执行何种写入方式(全量表,增量表,拉链表,周期型快照表,累计型快照表......)就取决于写表的sql语句。5.1.4

        3. end

      2. END

    3. END
  3. DWD层:DWD层需构建维度模型。选择业务过程→声明粒度→确认维度→确认事实   
    应该尽可能选择最小粒度
  4. endHere

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

(1)单引号不取变量值

(2)双引号取变量值

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

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

 

 

你可能感兴趣的:(数据分析,数据挖掘)