
离线数仓
文章平均质量分 67
数仓学习整理
大数据开发工程师-宋权
攻城狮,嗷!!!!
展开
-
(57)创建模板
1)点击配置/模板/创建模板2)配置模板名称/群组3)配置监控项4)配置触发器5)配置动作6)配置模板7)测试(1)启动hadoop集群[atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh(2)停止hadoop集群[atguigu@hadoop102 hadoop-3.1.3]$ sbin/stop-dfs.sh(3)查看报警邮件(注:以上就是zabbix的相...原创 2021-07-18 10:09:48 · 211 阅读 · 0 评论 -
(56)申请邮箱
1.邮件报警,可以采用126、163、qq等邮箱。下面以126邮箱为例。1)申请注册一个126邮箱2)点击邮箱账号=》账号管理3)开启SMTP服务4)一定要记住授权码4.2.6 创建报警媒介类型(Media type)1)点击管理/报警媒介类型/Email 2)编辑Email (1)126邮箱(2)163邮箱配置3)测试Email 4)Email绑定收件人4.2.7 测试1)关闭集群中的HDFS,会有如下效...原创 2021-07-18 10:01:43 · 281 阅读 · 0 评论 -
(55)创建监控项(Items)
1)点击监控项(Items)2)点击创建监控项(Create Item)3)配置监控项(Item)4)查看创建的监控项5)查看监控项最新数据4.2.3 创建触发器(Trigger)1)点击配置/主机/触发器2)点击创建触发器3)编辑触发器4.2.4 创建动作(Action)1)点击配置/动作/创建动作2)编辑动作(Action)3)测试重新启动HDF...原创 2021-07-18 09:53:30 · 125 阅读 · 0 评论 -
(54)Zabbix 使用
1 Zabbix 术语 4.1.1 主机(Host) 一台你想监控的网络设备,用 IP 或域名表示。 4.1.2 监控项(Item) 你想要接收的主机的特定数据,一个度量数据。4.1.3 触发器(Trigger) 一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式。 4.1.4 动作(Action) 一个对事件做出反应的预定义的操作,比如邮件通知。 2 Zabbix 实战 4.2.1 创建 Host 1)点击配置/主机/创建主机 2)配置.原创 2021-07-16 13:32:00 · 759 阅读 · 0 评论 -
(53) Zabbix 入门(集群监控)
1.1 Zabbix 概述 Zabbix 是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix 使用 灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器 的问题。基于已存储的数据,Zabbix 提供了出色的报告和数据可视化功能。 1.2 Zabbix 基础架构 2.Zabbix 部署 .1 集群规划 2 准备工作 1 关闭集群 如果集群开启,先关闭集群。因为安装 Zabbix 前,需要重启虚拟机。 [...原创 2021-07-16 11:30:02 · 338 阅读 · 3 评论 -
(52)Kylin BI 工具集成
1.可以与 Kylin 结合使用的可视化工具很多,例如: ODBC:与 Tableau、Excel、PowerBI 等工具集成 JDBC:与 Saiku、BIRT 等 Java 工具集成 RestAPI:与 JavaScript、Web 网页集成 Kylin 开发团队还贡献了 Zepplin 的插件,也可以使用 Zepplin 来访问 Kylin 服务。1 JDBC 1)新建项目并导入依赖 <dependencies> <dependency>原创 2021-07-16 11:14:54 · 189 阅读 · 0 评论 -
(51)Row Key 优化
Kylin 会把所有的维度按照顺序组合成一个完整的 Rowkey,并且按照这个 Rowkey 升序 排列 Cuboid 中所有的行。 设计良好的 Rowkey 将更有效地完成数据的查询过滤和定位,减少 IO 次数,提高查询 速度,维度在 rowkey 中的次序,对查询性能有显著的影响。 Row key 的设计原则如下: 1)被用作过滤的维度放在前边。 2)基数大的维度放在基数小的维度前边。4 并发粒度优化 当 Segment 中某一个 Cuboid 的大小超出..原创 2021-07-16 11:08:24 · 372 阅读 · 1 评论 -
(50)Kylin Cube 构建优化
.1 使用衍生维度(derived dimension)衍生维度用于在有效维度内将维度表上的非主键维度排除掉,并使用维度表的主键(其 实是事实表上相应的外键)来替代它们。Kylin 会在底层记录维度表主键与维度表其他维度 之间的映射关系,以便在查询时能够动态地将维度表的主键“翻译”成这些非主键维度,并 进行实时聚合。 虽然衍生维度具有非常大的吸引力,但这也并不是说所有维度表上的维度都得变成衍生 维度,如果从维度表主键到某个维度表维度所需要的聚合工作量非常大,则不建议使.原创 2021-07-16 10:59:31 · 224 阅读 · 0 评论 -
(49) Cube 存储原理
1.cube存储原理2.cube构建算法1)逐层构建算法(layer) 我们知道,一个 N 维的 Cube,是由 1 个 N 维子立方体、N 个(N-1)维子立方体、N*(N- 1)/2 个(N-2)维子立方体、......、N 个 1 维子立方体和 1 个 0 维子立方体构成,总共有 2^N 个 子立方体组成,在逐层算法中,按维度数逐层减少来计算,每个层级的计算(除了第一层, 它是从原始数据聚合而来),是基于它上一层级的结果来计算的。比如,[Group by ...原创 2021-07-16 10:46:11 · 1060 阅读 · 0 评论 -
(48)Kylin Cube 构建原理
1 维度和度量维度:即观察数据的角度。比如员工数据,可以从性别角度来分析,也可以更加细化, 从入职时间或者地区的维度来观察。维度是一组离散的值,比如说性别中的男和女,或者时 间维度上的每一个独立的日期。因此在统计时可以将维度值相同的记录聚合在一起,然后应 用聚合函数做累加、平均、最大和最小值等聚合计算。 度量:即被聚合(观察)的统计值,也就是聚合运算的结果。比如说员工数据中不同性 别员工的人数,又或者说在同一年入职的员工有多少。2 Cube 和 Cuboid有了维度跟度原创 2021-07-16 10:30:42 · 106 阅读 · 0 评论 -
(47)使用进阶
1)每日全量维度表及拉链维度表重复 Key 问题如何处理 按照上述流程,会发现,在 cube 构建流程中出现以下错误错误原因分析: 上述错误原因是 model 中的维度表 dwd_dim_user_info_his 为拉链表、dwd_dim_sku_info 为每日全量表,故使用整张表作为维度表,必然会出现订单表中同一个 user_id 或者 sku_id 对应多条数据的问题,针对上述问题,有以下两种解决方案。 方案一:在 hive 中创建维度表的临时表,该临时表中只存放维.转载 2021-07-16 10:17:52 · 89 阅读 · 0 评论 -
(46)构建cube
1)点击 new, 并点击 new cube2)填写 cube 信息,选择 cube 所依赖的 model,并点击 next 3)选择所需的维度,如下图所示 4)选择所需度量值,如下图所示4)cube 自动合并设置,cube 需按照日期分区字段每天进行构建,每次构建的结果会保存在 Hbase 中的一张表内,为提高查询效率,需将每日的 cube 进行合并,此处可设置合并周期。5)Kylin 高级配置(优化相关,暂时跳过)6)Kylin 相关...原创 2021-07-16 10:11:01 · 554 阅读 · 0 评论 -
(45)Kylin 安装
1.Kylin 依赖环境 安装 Kylin 前需先部署好 Hadoop、Hive、Zookeeper、HBase,并且需要在/etc/profile 中 配置以下环境变量 HADOOP_HOME,HIVE_HOME,HBASE_HOME,记得 source 使其生 效.2 Kylin 搭建 1)上传 Kylin 安装包 apache-kylin-3.0.2-bin.tar.gz 2)解压 apache-kylin-3.0.2-bin.tar.gz 到/opt/module原创 2021-07-15 09:55:20 · 133 阅读 · 0 评论 -
(44)Presto 命令行 Client 安装
1.命令行 Client 安装1)下载 Presto 的客户端 https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.196/presto-cli-0.196- executable.jar 2)将 presto-cli-0.196-executable.jar 上传到 hadoop102 的/opt/module/presto 文件夹下 3)修改文件名称 [atguigu@hadoop102 presto]$原创 2021-07-15 09:38:18 · 834 阅读 · 2 评论 -
(43)即席查询(Presto)
1.概念2.架构原创 2021-07-15 09:15:53 · 183 阅读 · 1 评论 -
(42)Superset 实战
4.2 制作饼状图 4.2.1 配置 Table 此处使用地区主题表——ads_user_topic 4.2.2 配置 Chart原创 2021-07-14 11:08:28 · 145 阅读 · 0 评论 -
(41)Superset 使用
对接 MySQL 数据源 1 安装依赖 (superset) [atguigu@hadoop102 ~]$ conda install mysqlclient 说明:对接不同的数据源,需安装不同的依赖,以下地址为官网说明 http://superset.apache.org/installation.html#database-dependencies 2 重启 Superset (superset) [atguigu@hadoop102 ~]$ superset.sh restar原创 2021-07-14 11:05:33 · 179 阅读 · 1 评论 -
(38)DWS层
1 每日设备行为 每日设备行为,主要按照设备 id 统计。原创 2021-07-14 10:15:04 · 205 阅读 · 0 评论 -
(37)数仓搭建-DWS 层
5.1 业务术语 1)用户 用户以设备为判断标准,在移动统计中,每个独立设备认为是一个独立用户。Android 系统根据 IMEI 号,IOS 系统根据 OpenUDID 来标识一个独立用户,每部手机一个用户。 2)新增用户 首次联网使用应用的用户。如果一个用户首次打开某 APP,那这个用户定义为新增用 户;卸载再安装的设备,不会被算作一次新增。新增用户包括日新增用户、周新增用户、月 新增用户。 3)活跃用户 打开应用的用户即为活跃用户,不考虑用户的使用情况。每天一台设备原创 2021-07-14 09:56:20 · 314 阅读 · 0 评论 -
(36)DWD层业务数据导入脚本
1.编写脚本 1)在/home/atguigu/bin 目录下创建脚本 ods_to_dwd_db.sh [atguigu@hadoop102 bin]$ vim ods_to_dwd_db.sh 在脚本中填写如下内容 #!/bin/bash APP=gmall hive=/opt/module/hive/bin/hive # 如果是输入的日期按照取输入日期;如果没输入日期取当前时间的前一天 if [ -n "$2" ] ;then do_date=$2 else原创 2021-07-14 09:49:11 · 618 阅读 · 0 评论 -
(35)用户维度表(拉链表)
用户表中的数据每日既有可能新增,也有可能修改,但修改频率并不高,属于缓慢变化 维度,此处采用拉链表存储用户维度数据。1)什么是拉链表2)为什么要做拉链表 3)拉链表形成过程 4)拉链表制作过程图5)拉链表制作过程 步骤 0:初始化拉链表(首次独立执行) (1)建立拉链表(2)初始化拉链表步骤 1:制作当日变动数据(包括新增,修改)每日执行 (1)如何获得每日变动表 a.最好表内有创建时间和变动时...原创 2021-07-14 09:45:43 · 1634 阅读 · 0 评论 -
(38)DWD层事实表创建
1.支付事实表(事务型事实表)1)建表语句 hive (gmall)> drop table if exists dwd_fact_payment_info; create external table dwd_fact_payment_info ( `id` string COMMENT 'id', `out_trade_no` string COMMENT '对外业务编号', `order_id` string COMMENT '订单编号', `user_id.原创 2021-07-13 14:47:21 · 899 阅读 · 0 评论 -
(37)DWD 层(业务数据)
业务数据方面 DWD 层的搭建主要注意点在于维度建模,减少后续大量 Join 操作。1.商品维度表(全量) 商品维度表主要是将商品表 SKU 表、商品一级分类、商品二级分类、商品三级分类、 商品品牌表和商品 SPU 表联接为商品表。1)建表语句 hive (gmall)> DROP TABLE IF EXISTS `dwd_dim_sku_info`; CREATE EXTERNAL TABLE `dwd_dim_sku_info` ( `id` str.原创 2021-07-13 14:16:39 · 405 阅读 · 0 评论 -
(36)DWD 层用户行为数据加载脚本
(1)在 hadoop102 的/home/atguigu/bin 目录下创建脚本 [atguigu@hadoop102 bin]$ vim ods_to_dwd_log.sh 在脚本中编写如下内容#!/bin/bash hive=/opt/module/hive/bin/hive APP=gmall # 如果是输入的日期按照取输入日期;如果没输入日期取当前时间的前一天 if [ -n "$1" ] ;then do_date=$1 else do_date=`原创 2021-07-13 14:03:51 · 249 阅读 · 0 评论 -
(35)错误日志表
错误日志解析思路:错误日志表中每行数据对应一个错误记录,为方便定位错误,一个 错误记录应当包含与之对应的公共信息、页面信息、曝光信息、动作信息、启动信息以及错 误信息。先将包含 err 字段的日志过滤出来,然后使用 get_json_object 函数解析所有字段。1)建表语句 hive (gmall)> drop table if exists dwd_error_log; CREATE EXTERNAL TABLE dwd_error_log( `area.原创 2021-07-13 13:54:53 · 541 阅读 · 0 评论 -
(34)曝光日志表
曝光日志解析思路:曝光日志表中每行数据对应一个曝光记录,一个曝光记录应当包含 公共信息、页面信息以及曝光信息。先将包含 display 字段的日志过滤出来,然后通过 UDTF 函数,将 display 数组“炸开”(类似于 explode 函数的效果),然后使用 get_json_object 函 数解析每个字段。 1)建表语句 hive (gmall)> drop table if exists dwd_display_log; CREATE EXTERNA.原创 2021-07-13 12:01:32 · 816 阅读 · 0 评论 -
(33)创建 UDTF 函数——编写代码
(1)创建一个 maven 工程:hivefunction (2)创建包名:com.atguigu.hive.udtf (3)引入如下依赖 <dependencies> <!--添加 hive 依赖--> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version&原创 2021-07-13 11:40:08 · 244 阅读 · 0 评论 -
(32)页面日志表
1.页面日志解析思路:页面日志表中每行数据对应一个页面访问记录,一个页面访问记录 应该包含日志中的公共信息和页面信息。先将所有包含 page 字段的日志过滤出来,然后使 用 get_json_object 函数解析每个字段。1)建表语句 hive (gmall)> drop table if exists dwd_page_log; CREATE EXTERNAL TABLE dwd_page_log( `area_code` string COMMENT '.原创 2021-07-12 17:27:50 · 181 阅读 · 3 评论 -
(31)数仓搭建-DWD 层
1)对用户行为数据解析。 2)对核心数据进行判空过滤。 3)对业务数据采用维度模型重新建模。 、1.DWD 层(用户行为日志解析) 1.1日志格式回顾(1)页面埋点日志 (2)启动日志2.get_json_object 函数使用 1)数据 [{"name":" 大 郎 ","sex":" 男 ","age":"25"},{"name":" 西 门 庆 ","sex":" 男 ","age":"47"}] 2)取出第一个 json 对象 hive..原创 2021-07-12 17:16:04 · 225 阅读 · 2 评论 -
(30)ODS 层加载数据脚本
1.编写脚本 1)在/home/atguigu/bin 目录下创建脚本 hdfs_to_ods_db.sh [atguigu@hadoop102 bin]$ vim hdfs_to_ods_db.sh 在脚本中填写如下内容 #!/bin/bash APP=gmall hive=/opt/module/hive/bin/hive # 如果是输入的日期按照取输入日期;如果没输入日期取当前时间的前一天 if [ -n "$2" ] ;then do_date=$2 else原创 2021-07-12 16:45:51 · 586 阅读 · 0 评论 -
(29)ODS层(业务数据)
1.订单表(增量及更新)hive (gmall)> drop table if exists ods_order_info; create external table ods_order_info ( `id` string COMMENT '订单号', `final_total_amount` decimal(16,2) COMMENT '订单金额',`order_status` string COMMENT '订单状态', `user_id` strin...原创 2021-07-12 16:44:29 · 328 阅读 · 1 评论 -
(28)ODS层加载数据脚本
1.在 hadoop102 的/home/atguigu/bin 目录下创建脚本 [atguigu@hadoop102 bin]$ vim hdfs_to_ods_log.sh 在脚本中编写如下内容(1)说明 1: [ -n 变量值 ] 判断变量的值,是否为空 -- 变量的值,非空,返回 true -- 变量的值,为空,返回 false 注意:[ -n 变量值 ]不会解析数据,使用[ -n 变量值 ]时,需要对变量加上双引号(" ") (2)说明 2: 查看 d.原创 2021-07-12 16:23:49 · 302 阅读 · 0 评论 -
(27)ODS层(用户行为数据)
1.创建日志表ods_log1.创建支持 lzo 压缩的分区表 说明 Hive 的 LZO 压缩:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LZO2.加载数据3.查看是否加载成功 hive (gmall)> select * from ods_log limit 2; 4.为 lzo 压缩文件创建索引(不太明白,加索引的意义)[atguigu@hadoop102 bi...原创 2021-07-12 16:18:57 · 234 阅读 · 0 评论 -
(26)增加ApplicationMaster 资源比例
1.针对容量调度器并发度低的问题,考虑调整 yarn.scheduler.capacity.maximum-amresource-percent 该参数。默认值是 0.1,表示集群上 AM 最多可使用的资源比例,目的为限 制过多的 app 数量。 (1)在 hadoop102 的/opt/module/hadoop-3.1.3/etc/Hadoop/capacity-scheduler.xml 文件中 修改如下参数值(2)分发 capacity-scheduler.xml 配原创 2021-07-12 11:53:17 · 1307 阅读 · 0 评论 -
(25)Yarn容量调度器并发度问题演示
1.Yarn 默认调度器为 Capacity Scheduler(容量调度器),且默认只有一个队列——default。 如果队列中执行第一个任务资源不够,就不会再执行第二个任务,一直等到第一个任务执行 完毕。 (1)启动 1 个 hive 客户端,执行以下插入数据的 sql 语句。 hive (default)> insert into table student values(1,'abc'); 执行该语句,hive 会初始化一个 Spark 会话,用以执行 hive on sp原创 2021-07-12 11:45:39 · 391 阅读 · 0 评论 -
(24)数仓搭建-ODS层
1.思路1)保持数据原貌不做任何修改,起到备份数据的作用。2)数据采用LZO压缩,减少磁盘存储空间。100G数据可以压缩到10G以内。3)创建分区表,防止后续的全表扫描,在企业开发中大量使用分区表。4)创建外部表。在企业开发中,除了自己用的临时表,创建内部表外,绝大多数场景都是创建外部表。2.Hive环境准备(1)Hive引擎简介Hive引擎包括:默认MR、tez、sparkHive on Spark:Hive既作为存储元数据又负责SQL的解析优化,语法是HQL语法,执行引擎转载 2021-07-11 16:30:37 · 325 阅读 · 0 评论 -
(23)DWS 层与DWT 层
1.设计DWS 层和DWT 层统称宽表层,这两层的设计思想大致相同,通过以下案例进行阐述。1)问题引出:两个需求,统计每个省份订单的个数、统计每个省份订单的总金额2)处理办法:都是将省份表和订单表进行join,group by 省份,然后计算。同样数据被计算了两次,实际上类似的场景还会更多。那怎么设计能避免重复计算呢?针对上述场景,可以设计一张地区宽表,其主键为地区ID,字段包含为:下单次数、下单金额、支付次数、支付金额等。上述所有指标都统一进行计算,并将结果保存在该宽表中,这样就能有效原创 2021-07-11 16:07:48 · 2839 阅读 · 0 评论 -
(22)数仓建模
1.ODS层(1)HDFS用户行为数据(2)HDFS业务数据(3)针对HDFS上的用户行为数据和业务数据,我们如何规划处理?(1)保持数据原貌不做任何修改,起到备份数据的作用。(2)数据采用压缩,减少磁盘存储空间(例如:原始数据100G,可以压缩到10G左右)(3)创建分区表,防止后续的全表扫描2.DWD层DWD层需构建维度模型,一般采用星型模型,呈现的状态一般为星座模型。维度建模一般按照以下四个步骤:选择业务过程→声明粒度→确认维度→确认事实(1).转载 2021-07-11 16:01:37 · 196 阅读 · 0 评论 -
(21)维度表和事实表
1.维度表维度表:一般是对事实的描述信息。每一张维表对应现实世界中的一个对象或者概念。例如:用户、商品、日期、地区等。维表的特征:➢ 维表的范围很宽(具有多个属性、列比较多)➢ 跟事实表相比,行数相对较小:通常< 10万条➢ 内容相对固定:编码表时间维度表: 日期ID day of week day of year 季度 节假日 2.事实表事实表中的每行数.原创 2021-07-11 15:43:07 · 761 阅读 · 0 评论 -
(19)数仓理论
1.范式理论1)定义 范式可以理解为设计一张数据表的表结构,符合的标准级别、规范和要求。 2)优点 采用范式,可以降低数据的冗余性。 为什么要降低数据冗余性? (1)十几年前,磁盘很贵,为了减少磁盘存储。 (2)以前没有分布式系统,都是单机,只能增加磁盘,磁盘个数也是有限的 (3)一次修改,需要修改多个表,很难保证数据一致性3)缺点 范式的缺点是获取数据时,需要通过 Join 拼接出最后的数据。 4)分类 目前业界范式有:第一范式(1NF)、第二范式(2NF)原创 2021-07-09 15:47:13 · 80 阅读 · 0 评论