数据仓库模型
1 模型设计思考流程
2 Hive 使用时注意的情况
Hive 创建表时文件格式的选择
Hive事务的局限性
数据抽取
4种CDC变化数据拉取方式
时间戳:添加更新时间等字段
触发器:当执行insert,update等sql时触发等
快照:
比如一天保存一份快照,第二天新快照和前一天快照根据主键全外连接。
并根据主键比较的结果增加一个标志字段,I表示新增,U表示更新,D代表删除,N代表没有变化。外层查询过滤掉没有变化的记录。
但是性能开销大,存储空间开销大
日志
最复杂的和最没有侵入性的CDC方法是基于日志的方式
如使用MySQL数据库,只要在数据库服务器中启用二进制日志(设置log_bin服务器系统变量)。
之后就可以实时从数据库日志中读取到所有数据库写操作,并使用这些操作来更新数据仓库中的数据。
这种方式需要把二进制日志转为可以理解的格式,然后再把里面的操作按照顺序读取出来
sqoop覆盖导入和增量导入
增量导入
增量方式,根据entry_date字段,每次之后导入该字段last-value之后的数据
小结
数据转换和装载
渐变维-处理维度历史变换问题
1 可以采用sqoop通过last-value增量形式每天全量将mysql数据覆盖写入hive mysql过渡表
2 执行初始装载sql语句,通过hive mysql真正数据表cross join过度表,增量写入hive mysql真正数据表中,
hive本身的id自增可以通过row_number/UDFRowSequence实现
定期装载可以根据时间戳等4种CDC方式来部分拉取数据
书中例子的设计