spark学习笔记2(使用spark Sql进行离线数据分析项目)

本文介绍网站日志分析的全流程,包括数据采集、清洗、处理及可视化,重点讲解使用Spark和MySQL实现用户行为分析,如课程受欢迎度统计。

                                                         网站日志分析实战.项目


一、 用户行为日志概述

1. 用户访问、浏览、搜索、点击等行为都会被记录在网站的服务器上。

2. 用户的访问信息主要包括如下内容:

(1)系统属性。(操作系统、浏览器)

(2)点击的 url, 从什么 url 跳转过来

(3) 用户的sessionId 、ip

3. 意义

(1)网站的眼睛

用于优化网站布局,用户网站的推广决策


二、离线数据处理流程

1. 数据采集、 (flume、logstash)

将数据从网站的 sever 写到 HDFS

2. 数据清洗 (主要有spark、hive、 MapReduce)

清洗完之后将数据放在HDFS.

3.数据处理(spark、storm、MapReduce)

按照我们的业务需求处理数据.

4.数据的处理结果入库

结果存在 RDBMS或者 NoSql数据库中

5.数据的可视化展示(ECharts、阿里云的DataV)


三、项目需求

需求一:统计主站最受欢迎的课程、手记的Top N,并以饼图的形式展示

需求二:按照地市统计主站最受欢迎的 Top N

需求三:按照流量统计主站最受欢迎的课程


四、日志清洗

1. 原始日志格式

ip time http协议 code 流量 url 其他

2. 清洗过后的日志格式

ip time 流量 url

3、使用 spark SQL 解析访问日志.

4. 解析课程编号和类型

5 .根据ip解析城市信息

6. 使用 spark SQL 将访问时间按天进行分区输出


五、数据处理(统计一天视频课程的topN)

1. 读取清洗后的日志文件

RDD=spark.context.textFile(parquetFilePath)

logDF = spark.createDataFrame(RDD, AccessConvertUtil.structType)  //将RDD转换为DataFrame

2. 定义一个 AccessConvertUtil 类:用于将RDD转换为需要的RDD格式{

(1)structType

(2)parslog()

3. 根据中解析城市信息

(1) git hub ip database 项目拉取.

(2) 编译。

(3) 安装 jar 到自0项目 mm install

(4) 添加 pom 的依赖

3.将清洗的结果写到parquet文件

logDF.write(). format(“parquet") .partition('' day").save ("path")

4.按照需求完成统计信息

(1)读取 parquet 数据

(2) videoAccessTopNStastic(){

       a 按天和视频进行过滤

       b 使用groupby按照天和视频编号进行分组

       c 使用agg(count(cmsId))进行聚合统计

       d 按照降序进行排序

}

5. 将统计的结果插入到mysql数据库

(1)定义MysqlUtils工具类,用户获取mysql连接和释放资源

(2)定义实体类,用于指定mysql数据库的字段

(3)开发DAO类

         a 注意使用批量插入

(4)使用DataFram的foreachPartition()算子将统计结果写入到mysql数据库

六、按照城市进行结果统计(和第五点类似)

...

项目Spark离线处理本项目来源于企业级电商网站的大数据统计分析平台,该平台以 Spark 框架为核心,对电商网站的日志进行离线和实时分析。 该大数据分析平台对电商网站的各种用户行为(访问行为、购物行为、广告点击行为等)进行分析,根据平台统计出来的数据,辅助公司中的 PM(产品经理)、数据分析师以及管理人员分析现有产品的情况,并根据用户行为分析结果持续改进产品的设计,以及调整公司的战略和业务。最终达到用大数据技术来帮助提升公司的业绩、营业额以及市场占有率的目标。 本项目使用了 Spark 技术生态栈中最常用的三个技术框架,Spark Core、Spark SQL 和 Spark Streaming,进行离线计算和实时计算业务模块的开发。实现了包括用户访问 session 分析、页面单跳转化率统计、热门商品离线统计、广告流量实时统计 4 个业务模块。通过合理的将实际业务模块进行技术整合与改造,该项目几乎完全涵盖了 Spark Core、Spark SQL 和 Spark Streaming 这三个技术框架中大部分的功能点、知识点,学员对于 Spark 技术框架的理解将会在本项目中得到很大的提高。 项目Spark实时处理项目简介对于实时性要求高的应用,如用户即时详单查询,业务量监控等,需要应用实时处理架构项目场景对于实时要求高的应用、有对数据进行实时展示和查询需求时项目技术分别使用canal和kafka搭建各自针对业务数据库和用户行为数据的实时数据采集系统,使用SparkStreaming搭建高吞吐的数据实时处理模块,选用ES作为最终的实时数据处理结果的存储位置,并从中获取数据进行展示,进一步降低响应时间。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值