首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
Hadoop面试复习系列——HDFS(一)
2
大数据技术之_04_Hadoop学习_01_HDFS_HDFS概述+HDFS的Shell操作(开发重点)+HDFS客户端操作(开发重点)+HDFS的数据流(面试重点)+NameNode和Seconda
3
大数据技术之_05_Hadoop学习_02_MapReduce_MapReduce框架原理+InputFormat数据输入+MapReduce工作流程(面试重点)+Shuffle机制(面试重点)
4
大数据技术之_05_Hadoop学习_01_MapReduce_MapReduce概述+Hadoop序列化
5
大数据技术之_03_Hadoop学习_01_入门_大数据概论+从Hadoop框架讨论大数据生态+Hadoop运行环境搭建(开发重点)
6
大数据技术之_05_Hadoop学习_04_MapReduce_Hadoop企业优化(重中之重)+HDFS小文件优化方法+MapReduce扩展案例+倒排索引案例(多job串联)+TopN案例+找博客
7
大数据技术之_06_Zookeeper学习_Zookeeper入门+Zookeeper安装+Zookeeper内部原理+Zookeeper实战(开发重点)+企业面试真题
8
大数据技术之_09_Hive学习_复习与总结
9
大数据技术之_07_Hadoop学习_HDFS_HA(高可用)_HA概述+HDFS-HA工作机制+HDFS-HA集群配置+YARN-HA配置+HDFS Federation(联邦) 架构设计
10
大数据技术之_08_Hive学习_01_Hive入门+Hive安装、配置和使用+Hive数据类型
11
大数据技术之_08_Hive学习_04_压缩和存储(Hive高级)+ 企业级调优(Hive优化)
12
大数据技术之_08_Hive学习_05_Hive实战之谷粒影音(ETL+TopN)+常见错误及解决方案
13
大数据技术之_08_Hive学习_02_DDL数据定义(创建/查询/修改/删除数据库+创建表+分区表+修改表+删除表)+DML数据操作(数据导入+数据导出+清除表中数据)
14
大数据技术之_08_Hive学习_03_查询+函数
15
大数据技术之_16_Scala学习_09_函数式编程-高级
16
大数据技术之_09_Flume学习_Flume概述+Flume快速入门+Flume企业开发案例+Flume监控之Ganglia+Flume高级之自定义MySQLSource+Flume企业真实面试题(
17
大数据技术之_13_Azkaban学习_Azkaban(阿兹卡班)介绍 + Azkaban 安装部署 + Azkaban 实战
18
大数据技术之_19_Spark学习_07_Spark 性能调优 + 数据倾斜调优 + 运行资源调优 + 程序开发调优 + Shuffle 调优 + GC 调优 + Spark 企业应用案例
19
大数据技术之_12_Sqoop学习_Sqoop 简介+Sqoop 原理+Sqoop 安装+Sqoop 的简单使用案例+Sqoop 一些常用命令及参数
20
大数据技术之_16_Scala学习_13_Scala语言的数据结构和算法_Scala学习之旅收官之作
21
大数据技术之_19_Spark学习_06_Spark 源码解析 + Spark 通信架构、脚本解析、standalone 模式启动、提交流程 + Spark Shuffle 过程 + Spark 内存
22
大数据技术之_16_Scala学习_04_函数式编程-基础+面向对象编程-基础
23
大数据技术之_14_Oozie学习
24
大数据技术之_26_交通状态预测项目_01
25
大数据技术之_16_Scala学习_02_变量
26
大数据技术之_16_Scala学习_07_数据结构(上)-集合
27
大数据技术之_28_电商推荐系统项目_01
28
大数据技术之_28_电商推荐系统项目_02
29
大数据技术之_18_大数据离线平台_04_数据分析 + Hive 之 hourly 分析 + 常用 Maven 仓库地址
30
大数据技术之_16_Scala学习_01_Scala 语言概述
31
大数据技术之_29_MySQL 高級面试重点串讲_02
32
大数据技术之_18_大数据离线平台_05_离线平台项目模块小结
33
大数据技术之_19_Spark学习_06_Spark 源码解析小结
34
大数据技术之_16_Scala学习_05_面向对象编程-中级
35
大数据技术之_16_Scala学习_08_数据结构(下)-集合操作+模式匹配
36
大数据技术之_24_电影推荐系统项目_05_项目系统设计
37
大数据技术之_19_Spark学习_03_Spark SQL 应用解析小结
38
大数据技术之_19_Spark学习_07_Spark 性能调优小结
39
大数据技术之_19_Spark学习_05_Spark GraphX 应用解析小结
40
大数据技术之_19_Spark学习_02_Spark Core 应用解析小结
41
大数据技术之_24_电影推荐系统项目_08_项目总结及补充
42
大数据技术之_19_Spark学习_01_Spark 基础解析小结(无图片)
43
大数据技术之_18_大数据离线平台_03_数据处理+工具代码导入+业务 ETL 实现+创建数据库表
44
大数据技术之_24_电影推荐系统项目_02_Python 基础语法复习
45
大数据技术之_24_电影推荐系统项目_06_项目体系架构设计 + 工具环境搭建 + 创建项目并初始化业务数据 + 离线推荐服务建设 + 实时推荐服务建设 + 基于内容的推荐服务建设
46
大数据技术之_27_电商平台数据分析项目_01_大数据的框架回顾 + 大数据的企业应用
47
大数据技术之_23_Python核心基础学习_03_函数 + 对象(12.5小时)
48
大数据技术之_32_大数据面试题_01_Hive 基本面试 + Hive 数据分析面试 + Flume + Kafka 面试
49
大数据技术之_23_Python核心基础学习_04_ 异常 + 文件(3.5小时)
50
大数据技术之_16_Scala学习_03_运算符+程序流程控制
清单首页hadoop文章详情

大数据技术之_18_大数据离线平台_05_离线平台项目模块小结

  • 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 中。
下一篇
举报
领券