数据清洗一定是对Log4j熟悉操作
用户行为访问日志:1.网站页面的访问量
2.网站的粘性
3.推荐
用户行为日志分析的意义:眼睛, 神经
通过定时调度工具每一分种产生的一批数据
网站+ Linux croutab
项目实战:构建定时日志产生器----对接--》flume 构建conf*2----》zk -kafka
flume与kafka通道测试:kafka-customer对于的topic测试
flume对应流向的kafka broker list 日志是否更新
kafka 与sparkStreaming 通道测试: 构建sparkStreaming消息处理类,运行查看控制台的输出
实质 是flume与sparkStreaming间测试(保证flume与kafka的互通性)
数据清洗操作:构建日期处理类
功能1: 今天到现在为止 实战课程的访问量
条件参数分析: yyyyMMdd courseId count
数据存储:关系型数据库, 非关系型数据库、
关系型算法原理: 20171111 +1 ===>click count +下一批次统计结果
Hbase: 一个API就能搞定, 非常方便
Hbase表设计 RowKey 设计(核心)
day_courseId
如何使用scala (spark)操作Hbase?
步骤一:dao层设计和实现
创建CourseClickCount (bean) name,value
CourseClickCountDao 数据访问层,构建常见方法
测试habase每个方法的连通性,测试是否可以正常实现数据的操作
步骤二:dao层结合spark业务实现层
实现清洗后的日志到hbase中(通过sparkStreaming处理)
清洗算法设计: 从搜索引擎来的课程的访问量,对于网络地址的处理
https://www.sogou.com/web?query=sparkSql
思路总结:
如果现在要以“/”来分离,name对于"//",如何来处理
常见思路: split("//"),再结合成一个新的数组或者集合-->split("/")
新思路:先替换再split replaceAll("//","/") -->split("/")
filter(_._1)代表第2个元素,其中"_"类似于this
filter的使用是一种排除思想
map(x=>(_,1))这里的"_"代表传入进来的"x", =>()可以理解为转成了一个新的对象,
所以每次一定要清楚传入来的x 是什么,否则无法进行正确的处理