![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数仓
大数据面壁者
大数据相关知识分享,框架底层原理机制,生产学习中遇到的相关问题分享,共同学习,共同进步。
展开
-
数仓相关思考5
数仓相关思考51.什么样的表适合做成拉链表?缓慢变化的维度表, 需要记录表中每条数据的变化情况2.累积型快照事实表如何分区?如何导入数据? 按照事实发生的起始时间,进行分区! 步骤: ①查询数据的哪些分区在更新时,会被影响 ②查询出受影响分区的数据 ③查询出要导入的新的数据 ④新老交替 ⑤覆盖导入表中3.ods层的跨天支付问题总结如果需要查询当天支付订单中的订单信息,只需要原创 2021-01-09 11:37:56 · 195 阅读 · 0 评论 -
Hive常用日期处理函数
Hive常用日期处理函数1)date_format函数(根据格式整理日期)hive (gmall)> select date_format('2020-06-14','yyyy-MM');2020-062)date_add函数(加减日期)hive (gmall)> select date_add('2020-06-14',-1);2020-06-13hive (gmall)> select date_add('2020-06-14',1);2020-06-153)ne原创 2021-01-09 11:33:44 · 1898 阅读 · 0 评论 -
数仓之常用业务术语
业务术语1)用户用户以设备为判断标准,在移动统计中,每个独立设备认为是一个独立用户。Android系统根据IMEI号,IOS系统根据OpenUDID来标识一个独立用户,每部手机一个用户。2)新增用户首次联网使用应用的用户。如果一个用户首次打开某APP,那这个用户定义为新增用户;卸载再安装的设备,不会被算作一次新增。新增用户包括日新增用户、周新增用户、月新增用户。3)活跃用户打开应用的用户即为活跃用户,不考虑用户的使用情况。每天一台设备打开多次会被计为一个活跃用户。4)周(月)活跃用原创 2021-01-09 11:30:17 · 379 阅读 · 0 评论 -
使用拉链表记录用户表信息的变化
使用拉链表记录用户表信息的变化一、拉链表1.1 什么是拉链表1.2 为什么要做拉链表1.3 拉链表制作过程1.4 拉链表形成过程二、代码案例INSERT overwrite table dwd_dim_user_info_his --数据分两批导入到dwd_dim_user_his--第一批: old + 更新需要变化的old的数据SELECT --左表和右边关联后,右表中为NULL的是不需要更新的数据,否则且左表的end_date为9999-99-99,需要将次字段更新原创 2021-01-08 20:27:53 · 440 阅读 · 0 评论 -
累积型快照事实表聚合操作案例
一、累积型快照事实表累积型快照事实表通常也会使用分区表,但是分区字段会使用 事实生命周期中,最早的时间!事实发生的时间,作为分区字段!总结精简版:①查出老数据(dwd层)中哪些分区的数据,在今天发生了变化②根据变化的分区日期,查询老数据 old③查询当天新的数据 new④old full join new 新老交替⑤将合并后的结果写入分区!二、案例insert overwrite table dwd_fact_order_info partition(dt)原创 2021-01-08 20:19:34 · 1081 阅读 · 0 评论 -
不同类型的事实表导入操作总结
一、事务性事实表事务型事实表是每天导入新增。事实表在导入时建模策略:①挑选感兴趣的事实业务②确认粒度③挑选维度④选择度量事务型事实表 中的事实记录只会新增,不会修改! 从Mysql同步的数据,都是增量同步! 导入到ODS层!导入DWD层,只需要从ODS层,取出当天导入的新增的数据即可!二、周期型快照事实表由于周期型快照事实表的数据是会发生变化,所以导增量不合适。每天做一次快照,导入的数据是全量,区别于事务型事实表是每天导入新增。周期型快照事实表劣势:存储的数据量会比较大。原创 2021-01-08 20:16:43 · 1398 阅读 · 7 评论 -
数仓相关思考4
数仓相关思考41.数仓中向表中导入数据的方式以及区别是什么?load加载方式: 不走Job!如果是本地的文件,上传到表的目录中!如果是HDFS的文件,移动到表的目录中! 手动上传和load的区别: 如果是全量表,没有任何区别! 如果是分区表,load操作会生成分区的元数据! 如果是手动上传,必须修复表的元数据: msck repair table 表名insert插入数据方式: 走Job!原创 2021-01-08 19:39:17 · 163 阅读 · 0 评论 -
Hive自定义UDTF解析json不定长数组
Hive自定义UDTF解析json不定长数组一、UDTF函数概述UDTF(User-Defined Table-Generating Functions) 用来解决 输入一行输出多行(On-to-many maping) 的需求。二、添加pom.xml依赖 <dependencies> <dependency> <groupId>org.apache.hive</groupId>原创 2021-01-07 15:06:52 · 992 阅读 · 3 评论 -
Hive中get_json_object方法的使用
Hive中get_json_object方法的使用get_json_object(json_txt, path): 从一个JSON字符串中取出指定路径对应的数据!核心:path怎么写?$: 代表根对象. : 获取子元素的操作符[] : 获取一个数组中子元素的操作符用法:select get_json_object('[{"name":"大郎","sex":"男","age":"25"},{"name":"西门庆","sex":"男","age":"47"}]','$[0].name');原创 2021-01-07 14:39:31 · 1333 阅读 · 0 评论 -
数仓相关思考3
数仓相关思考31.ODS层表为什么要指定输入格式为com.hadoop.mapred.DeprecatedLzoTextInputFormat表的输入格式和表中存储数据的格式相关,输入格式的作用是为select语言提供一个输入格式,以便于读取表中的数据!ODS层表中存储的数据格式为 textfile ,但是使用了lzo压缩,为了可以正常读取和切片数据文件,必须设置为 DeprecatedLzoTextInputFormat!2.ODS层表能否切片?为什么?能否切片,主要取决于数据的存储格原创 2021-01-07 14:29:56 · 737 阅读 · 0 评论 -
Hive on Spark配置
Hive on Spark配置一、在Hive所在节点部署Spark首先部署Spark-Yarn模式,配置SPARK_HOME的环境变量。详见:https://blog.csdn.net/weixin_42796403/article/details/1114999401)上传并解压解压spark-3.0.0-bin-hadoop3.2.tgz[hadoop@hadoop102 software]$ tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/mo原创 2021-01-05 21:15:22 · 483 阅读 · 0 评论 -
Spark On Hive 与 Hive On Spark
Spark On Hive 与 Hive On SparkSparkSql:spark提供的一个模块,模块支持使用SQL语言及spark提供的DF,DS,API进行数据处理-Spark On Xxxx 是SparkSql的一个使用场景- Spark On Hive : spark程序,用了SQL | DF | DS ,处理的数据是用 Hive 管理起来的数据 !- Spark On Xxxx : spark程序,用了SQL | DF | DS ,处理的数据是用 Xxxx 管理起来的数据原创 2021-01-05 21:02:09 · 260 阅读 · 0 评论 -
什么时候需要创建分区表
什么时候需要创建分区表分区表的目的是为了分散数据,将目录中的数据,在次分散到多个分区目录因此数据量大时可以考虑分区如果在查询时,经常按照某个字段进行过滤,可以将过滤查询的字段作为分区字段,自然要将表改为分区表...原创 2021-01-05 20:52:27 · 1237 阅读 · 0 评论 -
数仓相关2
数仓小思考21.数仓分层每一层用来做什么O(original)DS层: 原始数据存储层 原始数据不做处理,保持原貌,直接导入!分区表,以数据导入的日期作为分区字段DWD(detail)层: 数据明细存储层将原始数据展开明细!展开明细时,通常会进行ETL操作!将维度表进行维度退化!将敏感数据脱敏!分区表,以数据导入的日期作为分区字段DWS(service)层: 数据服务存储层 为ads层提供数据服务! 将ADS层需要的数据,每天聚合!分区表,以数据导入的日期作为分区字段D原创 2021-01-05 20:11:51 · 168 阅读 · 0 评论 -
配置hive支持中文注释
配置hive支持中文注释①在Hive元数据存储的Mysql数据库中,执行以下SQL:#修改字段注释字符集alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;#修改表注释字符集alter table TABLE_PARAMS modify column PARAM_VALUE varchar(20000) character set utf8;#修改分区参数,支持分区建用中文表示alter ta原创 2021-01-05 14:48:36 · 274 阅读 · 0 评论 -
XShell丝滑操作之右键黏贴
XShell配置右键黏贴选中的内容配置好之后便可以丝滑操作了…原创 2021-01-05 14:45:24 · 142 阅读 · 0 评论 -
维度表和事实表
维度表和事实表一、维度表维度表:一般是对事实的描述信息。每一张维表对应现实世界中的一个对象或者概念。 例如:用户、商品、日期、地区等。维表的特征:维表的范围很宽(具有多个属性、列比较多)跟事实表相比,行数相对较小:通常< 10万条内容相对固定:编码表二、事实表事实表中的每行数据代表一个业务事件(下单、支付、退款、评价等)。“事实”这个术语表示的是业务事件的度量值(可统计次数、个数、金额等),例如,订单事件中的下单金额。每一个事实表的行包括:具有可加性的数值型的度量原创 2021-01-04 21:29:58 · 10544 阅读 · 0 评论 -
关系建模与维度建模
关系建模与维度建模当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。二者的主要区别对比如下表所示。一、关系建模关系模型如图所示,严格遵循第三范式(3NF),从图中可原创 2021-01-04 21:24:37 · 2898 阅读 · 0 评论 -
范式理论
范式理论一、 范式概念1)定义范式可以理解为设计一张数据表的表结构,符合的标准级别、规范和要求2)优点关系型数据库设计时,遵照一定的规范要求,目的在于降低数据的冗余性。为什么要降低数据冗余性?(1)十几年前,磁盘很贵,为了减少磁盘存储。(2)以前没有分布式系统,都是单机,只能增加磁盘,磁盘个数也是有限的(3)一次修改,需要修改多个表,很难保证数据一致性3)缺点范式的缺点是获取数据时,需要通过Join拼接出最后的数据。4)分类目前业界范式有:第一范式(1NF)、第二范式(2NF)、第原创 2021-01-04 21:14:26 · 1097 阅读 · 2 评论 -
数据仓库分层
一、数据仓库分层ODS层:原始数据层,存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理DWD层:对ODS层数据进行清洗(去除空值,脏数据,超过极限范围的数据)、维度退化脱敏等DWS层:以DWD为基础,按天进行轻度汇总。DWT层:以DWS为基础,按主题进行汇总ADS层:为各种报表提供数据二、数据仓库为什么要分层把复杂问题简单化,将复杂的任务分解成多层来完成,每一层只处理简单任务,方便定位问题。减少重复开发,规范数据分层,通过中间层数据,能够减少极大的重复计算,增加一次计算结果原创 2021-01-04 21:06:16 · 23721 阅读 · 0 评论 -
数仓相关
数仓小思考1.为什么使用关系型存储用户业务数据RDMS(关系型数据库)是基于OLTP(online transaction process在线事务处理)设计,重事务和在线处理2.用户行为数据和用户业务数据的区别用户行为数据侧重于记录事件,用户业务数据侧重记录完整的事实3.为什么采用json存储用户行为数据用户行为数据低价值密度,记录周期长,结构复杂json格式比xml少了标志类信息,占用空间小。比csv等文本文件多了结构信息,方便管理。4.为什么采用sqoop采集业务数据原创 2021-01-04 20:40:52 · 434 阅读 · 3 评论 -
数据数据采集之表同步策略
数据数据采集之表同步策略全量同步: 每天都将Mysql表中所有的数据同步到hive的分区中[hive的每个分区中的数据都是当天的全量数据]适用场景: 表的数据量不大,每天既有新增也有修改数据新增同步: 每天将mysql中当天新增的数据同步到hive的分区中适用场景: 表数据量比较大,每天只有新增数据新增及变化同步: 每天将mysql中当天新增数据以及修改的数据同步到hive的分区中适用场景: 表数据量比较大,每天既有新增也有修改数据特殊同步: 表的数据基本不会怎么改变,此时可以原创 2020-12-11 21:06:57 · 424 阅读 · 0 评论