思路:
1. Spark App 配置:
应用的名字
Master运行的位置
序列化的格式(在后续的代码中 ImmutableBytesWritable 需要)
2. 创建SparkContext对象
主要用于读取需要处理的数据,封装在RDD集合中,调度Jobs执行
2.1 读取日志
从哪读,路径
2.2 解析日志数据
2.2.1 map解析每条数据
(1)调度工具,进行解析
(2)得到的是Java的Map集合
(3)获取事件类型
3.对数据进行转化(ImmutableBytesWritable,Put)
在这里,之前设置的序列化格式就用到了,因为ImmutableBytesWritable不能自己序列化
(1)存储事件类型
(2)将集合List变量广播出去
(3)针对时间类型进行过滤eventType(这里可以用模式匹配来做)
RowKey:时间戳_访客ID
访问时间
用户唯一标识符
会员ID
时间类型别名
(4)创建Put对象
转化rowKey
(5)将Java类型转Scala类型
4. 将RDD中数据保存HBase表中
(1)创建表(判断):是否存在,不存在创建
(2)设置输出OutputFormat
(3)设置保存到HBase表的名称
(4)设置输出目录(HDFS上)
5. 保存,关闭资源