今日内容:
- 1) 教育项目数仓分层 (知道, 明确每一层的作用)
- 2) 数仓工具的相关的使用 (操作)
- 访问咨询主题看板实操
3.1 需求分析 (务必掌握 -- 最好能够自己分析的出来, 如果不行, 先理解掉)
3.2 建模分析 (务必掌握 -- 最好能够自己分析的出来, 如果不行, 先理解掉)
3.3 建模操作
1. 教育项目的数仓分层
回顾: 原有的基础分层
教育数仓中:
2. 数仓工具的使用
2.1 HUE相关的使用
HUE: hadoop 用户体验
出现目的: 提升使用hadoop生态圈中相关软件便利性
核心: 是将各类hadoop生态圈的软件的操作界面集成在一个软件中 (大集成者)
- 如何HUE界面呢?
2.2 HUE操作OOZIE
什么是oozie:
什么是工作流呢?
能够使用工作流完成的业务一般具有什么特点呢?
请问, 大数据的工作流程是否可以使用工作流来解决呢? 完全可以的
请问: 如何实现一个工作流呢? 已经有爱心人士将工作流软件实现了, 只需要学习如何使用这些软件配置工作流程即可
oozie本质是将工作流翻译为MR程序来运行
2.3 sqoop相关的操作
sqoop是隶属于Apache旗下的, 最早是属于cloudera公司的,是一个用户进行数据的导入导出的工具, 主要是将关系型的数据库(MySQL, oracle...)导入到hadoop生态圈(HDFS,HIVE,Hbase...) , 以及将hadoop生态圈数据导出到关系型数据库中。
将导入或导出命令翻译成mapreduce程序来实现。
通过sqoop将数据导入到HIVE主要有二种方式: 原生API 和 hcatalog API
目前主要采用 hcatalog的方式
2.3.1 sqoop的基本操作
- sqoop help 查看命令帮助文档
- sqoop list-databases --help 查看某一个命令帮助文档
- 如何查看mysql中有那些库呢?
- 如何查看mysql中hue数据库下所有的表呢?
2.3.2 sqoop的数据导入操作
- 数据准备工作 : mysql中执行
- 第一个: 如何将数据从mysql中导入到HDFS中 (全量)
- 第二个: 全量导入数据到Hive中
- 第三个: 如何进行条件导入到HDFS中
- 第四个: 如何通过条件的方式导入到hive中 (后续模拟增量导入数据)
2.3.3 sqoop的数据导出操作
需求: 将hive中 emp_add_hive 表数据导出到MySQL中
2.3.4 sqoop相关常用参数
参数 | 说明 |
--connect | 连接关系型数据库的URL |
--username | 连接数据库的用户名 |
--password | 连接数据库的密码 |
--driver | JDBC的driver class |
--query或--e | 将查询结果的数据导入,使用时必须伴随参--target-dir,--hcatalog-table,如果查询中有where条件,则条件后必须加上$CONDITIONS关键字。 如果使用双引号包含sql,则$CONDITIONS前要加上\以完成转义:\$CONDITIONS |
--hcatalog-database | 指定HCatalog表的数据库名称。如果未指定,default则使用默认数据库名称。提供 --hcatalog-database不带选项--hcatalog-table是错误的。 |
--hcatalog-table | 此选项的参数值为HCatalog表名。该--hcatalog-table选项的存在表示导入或导出作业是使用HCatalog表完成的,并且是HCatalog作业的必需选项。 |
--create-hcatalog-table | 此选项指定在导入数据时是否应自动创建HCatalog表。表名将与转换为小写的数据库表名相同。 |
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")' \ | 建表时追加存储格式到建表语句中,tblproperties修改表的属性,这里设置orc的压缩格式为SNAPPY |
-m | 指定并行处理的MapReduce任务数量。 -m不为1时,需要用split-by指定分片字段进行并行导入,尽量指定int型。 |
--split-by id | 如果指定-split by, 必须使用$CONDITIONS关键字, 双引号的查询语句还要加\ |
--hcatalog-partition-keys --hcatalog-partition-values | keys和values必须同时存在,相当于指定静态分区。允许将多个键和值提供为静态分区键。多个选项值之间用,(逗号)分隔。比如: --hcatalog-partition-keys year,month,day --hcatalog-partition-values 1999,12,31 |
--null-string '\N' --null-non-string '\N' | 指定mysql数据为空值时用什么符号存储,null-string针对string类型的NULL值处理,--null-non-string针对非string类型的NULL值处理 |
--hive-drop-import-delims | 设置无视字符串中的分割符(hcatalog默认开启) |
--fields-terminated-by '\t' | 设置字段分隔符 |
3. 访问咨询主题看板
3.1 访问咨询主题看板_需求分析
将调研需求转换为开发需求
- 需求一: 统计指定时间段内,访问客户的总数量。能够下钻到小时数据。
- 需求二: 统计指定时间段内,访问客户中各区域人数热力图。能够下钻到小时数据。
- 需求三: 统计指定时间段内,不同地区(省、市)访问的客户中发起咨询的人数占比;
咨询率=发起咨询的人数/访问客户量;客户与网咨有说一句话的称为有效咨询。
- 需求四: 统计指定时间段内,每日客户访问量/咨询率双轴趋势图。能够下钻到小时数据。
- 需求五: 统计指定时间段内,1-24h之间,每个时间段的访问客户量。
横轴:1-24h,间隔为一小时,纵轴:指定时间段内同一小时内的总访问客户量。
- 需求六: 统计指定时间段内,不同来源渠道的访问客户量占比。能够下钻到小时数据。
占比:
各个渠道访问量 / 总访问量
各个渠道下 咨询量/访问量占比
- 需求七: 统计指定时间段内,不同搜索来源的访问客户量占比。能够下钻到小时数据。
占比:
各个搜索来源访问量 / 总访问量
各个搜索来源下 咨询量 / 各个搜索来源访问量
- 需求八: 统计指定时间段内,产生访问客户量最多的页面排行榜TOPN。能够下钻到小时数据。
汇总:
3.2 访问咨询主题看板_业务数据准备
两个表关系图:
第一步: 在hadoop01的mysql中建一个数据库
第二步: 将项目资料中 nev.sql 脚本数据导入到nev数据库中
结果数据:
此准备工作在实际生产环境中是不存在的...
3.3 访问咨询主题看板_建模分析
建模: 如何在hive中构建各个层次的表
- ODS层: 源数据层
- DIM层: 维度层
- DWD层: 明细层
- DWM层: 中间层 (省略)
- DWS层: 业务层
- DA层: