第一节内容:业务数据迁移
如何将用户相关业务数据从MySQL数据表迁移到HBASE数据库中
- 方式一SQOOP直接导入数据,简单,并行导入
- 方式二:MapReduce程序
- 1.hbase数据库提供工具类: ImportTsv
- 2,自己编写MapReduce程序,灵活性大,难度较大
- 方式三:Spark程序
针对海量数据批量数据加载至HBase表时,推荐使用Bulkload方式加载,比较Put方式:
- 1,put方式插入数据:put --> WAL(预写日志) -->memstore(内存) --> storeFile, 当数量较多时,此种方式给HBase集群带来性能压力.
- Bulkload方式插入数据:data -> HFile文件中,HFile是HBase数据库底层数据存储文件,直接放入Region数据目录即可
- 批量Bulkload加载数据至HBase表时,首先要将MySql表的数据daoruHDFS(Hive表中)
第二方面内容:标签模型应用调度
使用Oozie提供java Client API 调度模型执行每一个workFlow,调度器Coore调度器
- oozie job类型: 工作流WorkFlow,调度Coordinator,批任务集Bundle
- Oozie核心组件工作流WorkFlow组成:工作流中每个Action Node运行,需要启动MapReduce任务组成.
- 使用Oozie调度执行应用程序时,三种方式
- 方式一:手动编写配置文件(xml),使用CLI(oozie job)oozie提交执行job;
- 方式二: 集成hue,可视化方式创建工作流和调度器,提交job;
- 方式三: 程序中直接调用Oozie Java Client API 提交执行Job,提前时将工作流和调度器配置文件和lib放入HDFS目录中
第三方面内容 : 包含三个要点:
1,标签存储与计算
- 标签管理: 开发标签管理系统WEB系统,新建标签,删除标签,修改标签及执行标签模型应用程序
- 标签存储:横表+竖表,hbase(随意添加标签) 和Elasticsearch(标签查询检索)
- 标签计算: 使用Spark对每个标签开发一个应用程序,给所有用户打上标签的值
2,用户画像功能模块
模块一:标签调度模块(工具类)
- 封装Oozie Java Client API ,方便调度执行Spark APPlication,每次执行都是调度器Coordinate
模块二:标签管理平台:tags-web
- 简易版,使用SparkBoot+vue开发,提供可以创建标签(1级2级3级标签,4级业务标签和5级属性标签),提供执行每个标签应用程序:
模块三: 标签模型计算
- 基于SparkSQL对每个标签模型计算,每个标签开发Spark Applicai
3,标签开发流程
- 提交流程
- 开发每个标签模型时,步骤
执行流程
- 每个标签模型编写程序时步骤
- 每个标签模型开发应用程序,读写HBase表的数据
- 加载HBase表数据:TableInputFormat
- 保存数据至HBase表TableOutputFormat
主要划分三个方面内容
- 1,标签模型开发[性别moxingkaifa]
- 含义:给每个用户打上性别标签的
- 具体编码步骤:8步
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=be6f78b54b4a414682265e5448ac8708.png- 核心难点:编写工具类HBasetools,提供read和write方法,从HBase表读写方法
- 2,规则匹配类型模型标签开发
- 整个标签分类中,分为三类:规则匹配类标签,统计类标签和数据挖掘类标签
- 3,重构代码
- 属性配置文件config.propertis:存储数据库连接信息和应用配置信息
- 工具类: 创建SparkSession实例对象工具类SparkUtils
- 设计模式: 模板方法设计模式(Template Parttern)使得代码更加简洁,更加关注业务核心实现.