sparkStremingx项目实战(python定时日志生成器+flume+kafka+ spark+ hbase+ springBoot)

数据清洗一定是对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 是什么,否则无法进行正确的处理




你可能感兴趣的:(spark,玩转spark)