1.通过flume,实时收集服务器上的日志信息,sink到hdfs
2.使用mapreduce对数据进行清洗和校验,规整出可建表的数据,进而创建贴源表
3.由hive创建贴源表——>即日志的最基本信息
4.通过贴源表,构建mr,得到用户点击流模型表pageView——>对贴源表数据做mapreduce处理,以userIp作为唯一标识(cookie、session亦可),得到用户的每个页面的访问明细
5.对点击流模型表进行处理,构建mr,得到用户点击流模型表visit——>该表通过对pageView的处理,以session做聚合,得到用户一个session过程的访问流程
(4、5两步得到的两个表,完全也可以使用hive,但是对比起使用mapreduce程序,会多一个步骤而且编码也相对困难)
3、4、5三张表,作为基础数据表,在之后的数据分析中发挥作用,三表处于ODS层
6.对贴源表进行处理创建ODS层明细宽表ods_weblog_detail
7.使用原始数据,通过创建中间表的方式来进行各种场景和维度的数据分析
整个数据分析的过程是按照数据仓库的层次分层进行的,总体来说,是从ODS原始数据中整理出一些中间表(比如,为后续分析方便,将原始数据中的时间、url等非结构化数据作结构化抽取,将各种字段信息进行细化,形成明细表),然后再在中间表的基础之上统计出各种指标数据
8.数据分析
名词解释:
ETL:https://www.cnblogs.com/yjd_hycf_space/p/7772722.html
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。可以说,以上构建点击流数据分析结构的7个步骤,就是一个完整的ETL过程,将数据加载到数据仓库后,才能进行之后的数据分析
DB、ODS、DW:https://www.jianshu.com/p/72e395d8cb33
结合上面的项目分析,上述从数据源(日志),经过数据清洗和准换后得到的表,可称为ODS中的数据,即操作性仓库数据,该部分数据的特点为具有实时性、贴近原始数据以及提供查询明细的特点。
数据仓库中的数据更加代表历史数据,存储的都是聚合后的数据,保存着所有ODS数据。
ODS作为数据源到DW之间的一层隔离,可以减少ETL的复杂度,将数据抽取过程分步简化。
ODS与数据仓库中的数据只是概念上的区分,二者都是通过hive进行操作,创建hive表,下沉数据。