spark大数据分析实战案列1学习 (lamda架构日志分析流水线)

日志实例格式

当数据量较小(10MB,100MB,10GB)可以通过Shell Python单机解决

Linux Shell命令 :  cat access.log.10 |awk '{a[$1]++} END {for(b in a) print b"\t"a[b]}

'| sort -k2 -r |head -n 10


   日志分析指标:

    1:PV

    2:UV

    3:PVUV (平均每位用户访问页面数)
    4:转化率 (完成当前事件的用户中出发下一个依赖事件的用户所占的比例)

    5:留存率

    6:用户属性

Lamda架构

Flume flume.conf配置文件

   



启动Flume Agent

# cd flume的安装目录

#nohup bin/flume -ng agent -n agent1 -c conf -f conf/flume-conf.properties &

flume采集的数据收集到HDFS和Kafka上了

Kafka 创建Topic

bin/Kafka-topics.sh -create --zookeeper (zookeeperIP地址,多个用 , 隔开):2181 -partitions 1 --topic

KafkaTopic(Topic Name)

整合Kafka与SparkStreaming


KafkaUtils.createStream()源码


为了方便分析  将记录转化为PView对象


 

统计过去15s的访客流量,每隔2s计算一次

实时百分比统计每个用户中段访问量的页面


结果输出到Mysql

sparkSQL 离线分析

日志格式


   

查询条件为 select * from pages where rating >1

返回的SchemaRDD已经过时 相等于DataFrame

ETL(. . .)是指通过SparkSql过滤返回的DataFrame类型的数据



在进行实时日志分析的过程中,存在很多分类问题 贝叶斯分类是一种常见分类算法

分类算法:从数学角度做一下定义 已知类别集合C=(y1,y2 , ... ,yn) 和待分类的物体集合I=(x1,x2 , ... ,xm)

确定映射规则 y=f(x)

filteredSessions.print()