黑泽君
大数据技术之_18_大数据离线平台_05_离线平台项目模块小结
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
黑泽君
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
大数据技术之_18_大数据离线平台_05_离线平台项目模块小结
大数据技术之_18_大数据离线平台_05_离线平台项目模块小结
黑泽君
关注
发布于 2019-05-07 10:56:53
595
0
发布于 2019-05-07 10:56:53
举报
文章被收录于专栏:
黑泽君的专栏
1、将项目软件工具包导入
2、项目思路:
2.1、读取 HDFS 数据进行 ETL 清洗操作,并将最终结果写入到 HBase 中。
2.2、从 HBase 中读取数据,进行新增用户统计分析操作,并将结果写入到 Mysql。
3、细节实现
数据清洗
:
3.1、LoggerUtil.java
3.1.1、主要作用:将字符串数据解析成 HashMap 键值对集合。
3.1.2、重要细节:
字符串的截取
不合法数据的过滤
字符串的解码(就是将%相关的字符串编码转换成可读类型的数据)
错误数据的 Logger 输出
3.1.3 过程描述
传入数据非空判断
去除数据首位空格
服务器时间格式验证
解析参数字符串,使用 UTF-8 解码后再存放于 map 集合中
解析 ip 地址所属地区,并存放于 map 集合中
解析浏览器信息,并存放于 map 集合中
数据清洗
:HDFS --> InputFormat --> Mapper --> Reducer --> OutputFormat --> HBase
3.2、AnalysisDataMapper.java
3.2.1、主要作用:开始清洗 HDFS 中的日志数据。
3.2.2、重要细节:
开始清洗数据,首先使用 LoggerUtil 将数据解析成 Map 集合
将得到的存放原始数据的 Map 集合封装成事件以用于事件数据合法性的过滤(事件的封装依赖于一个枚举类,使用事件的 alias 别名来区分匹配事件)
事件的封装要按照平台来区分
平台区分完成后,按照事件类型来区分(例如 en=e_l 等)
事件封装过程中涉及到事件数据完整性的清洗操作
数据输出:创建 RowKey,创建 Put 对象,等待输出到 HBase
3.3、AnalysisDataRunner.java
3.3.1、组装 Job
设置 Mapper 以及 Mapper 的输出 Key 和输出 Value
设置 Reducer 的数量为 0
设置输入路径(按照传入的时间读取指定 HDFS 时间文件夹中的数据),比如:-date 2017-08-14 => event_logs/2017/08/14
设置输出(主要是按照传入时间,创建指定 HBase 表,以用于数据保存输出),比如:HBase 表名要和时间有关 => event_logs20170814,然后使用 HBase 的新 API 的 Admin 创建表 => 如果表存在,则删除后重新创建
数据分析
:HBase --> HBaseInputFormat --> TableMapper --> Reducer --> MySQLOutputFormat --> MySQL
3.4、NewInstallUsersMapper.java
3.4.1、从 Hbase 中读取数据开始分析,输出 Key 的类型为总维度(进行用户分析的组合维度),输出 Value 的类型为 Text(保存的是 uuid)读取数据时,要验证数据有效性。
3.4.2、创建总维度对象,Text 对象。
3.4.3、拼装维度。
3.4.4、按照总维度聚合 Text(uuid)。
3.4.5、分别写出。
3.5、NewInstallUserReducer.java
3.5.1、接受 Mapper 的数据,泛型分别为:StatsUserDimension, Text, StatsUserDimension, MapWritableValue。
3.5.2、使用 set 集合去重 uuid,并统计 uuid 的个数。
3.5.3、将 KPI 名称和统计出来的个数做一个映射(使用 MapWritableValue 对象)。
3.5.4、写出即可。
3.6、NewInstallUserRunner.java 任务组装
3.6.1、ICollector.java:将数据最终插入到 Mysql 时用到的 SQL 语句的拼装接口。
3.6.2、NewInstallUserCollector.java:拼装用于插入 new_install_user 表的 SQL 语句。
3.6.3、BrowserNewInstallUserCollector.java:拼装用于插入 browser_new_install_user 表的 SQL 语句。
3.6.4、IDimensionConverter.java:接口,通过维度对象(每个维度对象中保存着不同的维度数据),得到维度对应的维度 id。
3.6.5、DimensionConverterImpl.java:接口的具体实现类。
3.6.6、TransformerMySQLOutputFormat.java:自定义 OutputFormat,用于将数据写入到 Mysql 中。
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
原始发表:2019-04-20 ,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
hbase
TDSQL MySQL 版
mapreduce
分布式
大数据
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
hbase
TDSQL MySQL 版
mapreduce
分布式
大数据
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
0
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
产品介绍
产品文档
精选特惠 用云无忧
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐