编写程序向HBase添加日志信息
关注公众号:分享电脑学习
回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)
承接上一篇文档《日志信息和浏览器信息获取及数据过滤》
上一个文档最好做个本地测试
将map方法改为public,做一个测试看是否有错误代码,代码和之前的MainProcess基本一样
之前完成了数据的过滤、补全,大致思路总结如下:
补全
1. IP地址的补全 ==> IP地址转换为地域信息 -->国家、省份、城市
(1) 直接使用第三方提供的rest api进行ip地址解析,比如淘宝
(2)使用第三方提供的IP解析库(解析文件) ==> 纯真IP数据库
(3)使用公司内部的IP库
表结构:start_ip、end_ip、country、province、city
start_ip和end_ip其实就是ip转换为long型之后的值
在获取数据的时候:
1. 将IP转换为long型
2. 查数据库看该值对应的地域是什么
2. 服务器时间转换 1532762408.139 -> 153276240839
将服务器时间转换为毫米级的时间戳
3. 浏览器UserAgent数据的解析补全
作用:获取浏览器和操作系统相关数据
方式: UASparser.jar
针对不同的平台、不同的事件进行数据过滤判断
完成了数据的过滤、补全,接下来完成清洗的内容。
先明白下面的选择:
为什么选择HBase作为数据存储?
1.数据收集的各个事件字段不固定,导致etl之后的数据的结构不是固定的,使用Hive表要求结构必须是固定的,所以这里采用HBase,hbase中的列可多可少
2.因为我们的数据分析的时候不是获取所有事件的数据,使用HBASE存储,可以将数据的过滤操作放到RegionServer中进行处理,降低数据的网络传输量
3.对比日志的格式发现日志的内容都可以解析成一个个key-value对的形式
HBase表结构的设计
1. 按天分表:一天的数据放一张表,做一个定时任务,30天以前的数据归档到一张历史表中
2. rowkey设计:随机的值(uuid+serverTime+clientInfo)
通过crc32生成一个唯一的值
提取每条日志数据中特征字段信息,然后通过crc32工具根据一定的算法生成一个唯一的值
3. 列簇:采用单列簇
4. 其他相关参数的设置,比如是否缓存
开始代码编写
首先编写一个Map和Runner
Map使用之前的AnalysisDataMapper,我们进一步完善
添加继承类和属性
Setup方法
Map方法更改
添加结果输出
完成generateHBasePut方法
完成generateRowKey方法
创建Runner
完成代码,继承Tool
添加配置属性
完成运行方法
设置配置
重载运行方法
开始创建job
设置参数信息
完成processArgs方法
完成setJobInputPaths方法
完成setHBaseOutputConfig方法
构建表名称
本地配置启动部分
HbaseAdmin的创建,注意这里有个Hbase版本的选择,根据自己机器的环境
Info列镞
创建表
主方法
完成之后开始运行(集群上环境都已经启动)
本地
默认是路径上有日志数据,读取的是昨天的,如果没有需要指定时间
添加参数
然后打包运行到集群中
这里添加了一个配置文件
里面要更改一个路径,这里是你的工作空间
然后执行maven的install命令,打包成jar
上传到linux
执行
Yarn jar 你的jar com.xlgl.wzy.mr.etl.AnalysisDataRunner(runner的全包类)
去HBASE看有没有表和数据
编写程序向HBase添加日志信息的更多相关文章
- logback日志项目使用方法 - 150205交易模块添加日志信息logback,orderNo订单号为log主键便于跟踪,数字常量化,解决取消支付BUG,弱网络环境原因
1.项目里面的日志,便于跟踪数据的变更和异常错误信息产生.生产环境的日志级别是INFO,测试环境日志级别DEBUG,如果生产环境的日志级别是DEBUG,虽然方便查询问题,可以看到SQL语句等信息,但是 ...
- c#.NET中日志信息写入Windows日志中解决方案
1. 目的应用系统的开发和维护离不开日志系统,选择一个功能强大的日志系统解决方案是应用系统开发过程中很重要的一部分.在.net环境下的日志系统解决方案有许多种,log4net是其中的佼佼者.在Wind ...
- VisualSVN:强制必须填写日志信息
上回将到怎么修改已提交的版本日志信息,而开发项目过程中团队中总是有人忘记添加日志信息注释直接提交,这样会后期维护带来不便. 现在先演示一下效果 当直接提交一个空白日志信息时 有填写日志信息时 那怎么实 ...
- 使用JAVA编写电话薄程序,具备添加,查找,删除等功能
//该程序需要连接数据库.根据word文档要求所有功能均已实现.//大部分方法基本差不多,//在查询修改的时候能输出 最大ID号 和最小ID号,并且可以对输入的ID号进行判断是否存在(具体方法请查看 ...
- 【转】Python之向日志输出中添加上下文信息
[转]Python之向日志输出中添加上下文信息 除了传递给日志记录函数的参数(如msg)外,有时候我们还想在日志输出中包含一些额外的上下文信息.比如,在一个网络应用中,可能希望在日志中记录客户端的特定 ...
- Python 日志输出中添加上下文信息
Python日志输出中添加上下文信息 除了传递给日志记录函数的参数(如msg)外,有时候我们还想在日志输出中包含一些额外的上下文信息.比如,在一个网络应用中,可能希望在日志中记录客户端的特定信息,如: ...
- C#添加错误日志信息
错误日志是软件用来记录运行时出错信息的文本文件.编程人员和维护人员等可以利用错误日志对系统进行调试和维护. 系统日志 系统日志包含了由Windows系统组件记录的事件.例如,在启动期间装入驱动程序或其 ...
- log4net--帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具
1. log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具. 2. Log4net的结构如下 ...
- VS2010中编写宏添加作者信息与函数注释
这里所说的宏是指通过一系列键盘组合键和可以插入自定义内容.下面介绍怎么编写一个自己的宏: 1.在Visual Studio 2010中按Alt+F11打开宏IDE: 2.打开后选择添加模块: 3.在弹 ...
随机推荐
- linux重启后JDk环境变量配置失效最终解决方案
最终解决方案:https://bbs.deepin.org/forum.php?mod=viewthread&tid=147762 其实这个修改可能也存在问题,如果有耐心的可以每次打开终端 ...
- 如何在子线程中更新UI
一:报错情况 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that creat ...
- VUE3 之 template 语法
1. 概述 老话说的好:干一行,爱一行,踏实工作才是真正快乐的源泉. 言归正传,今天继续聊 VUE3 的话题,今天聊聊 template 语法. 闲话不多说,直接上代码. 2. template 语法 ...
- Android App加固原理与技术历程
App为什么会被破解入侵 随着黑客技术的普及化平民化,App,这个承载我们移动数字工作和生活的重要工具,不仅是黑客眼中的肥肉,也获得更多网友的关注.百度一下"App破解"就有529 ...
- 面试官:HashSet如何保证元素不重复?
本文已收录<Java常见面试题>系列,Git 开源地址:https://gitee.com/mydb/interview HashSet 实现了 Set 接口,由哈希表(实际是 HashM ...
- CF831B Keyboard Layouts 题解
Content 给你 \(26\) 个字母的映射(都是小写,大写的映射方式相同),再给你一个字符串 \(s\),求它的映射结果(如果有非字母的字符保持不变). 数据范围:\(1\leqslant |s ...
- 年度最受欢迎的开源CHROME插件
又到了年底,时间过得飞快,每到年底就有各种各样的总结各种各样的奖项出来.前几天谷歌就公布了2021年年度最受欢迎Chrome插件名单,名单共有13个. 让很多网友费解的是,其中有很多并不是今年刚出现的 ...
- 数据改变认知——不知怎么选,用RFM模型看舔狗质量!
假设我长得很漂亮,拥有众多追求者,但是初出闺房的我对这世界上的男人毫无认知,那么该如何选择呢?这真是一个问题! 妈妈说,愿意为我花钱的男人未必爱我,但不愿意为我花钱的男人必定不爱我,而后传授了一套RF ...
- 【LeetCode】NO.376 摆动序列 (Python) [贪心算法]
376. 摆动序列 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 .第一个差(如果存在的话)可能是正数或负数.仅有一个元素或者含两个不等元素的序列也视作摆动序列. 例 ...
- 再谈多线程模型之生产者消费者(多生产者和多消费者 )(c++11实现)
0.关于 为缩短篇幅,本系列记录如下: 再谈多线程模型之生产者消费者(基础概念)(c++11实现) 再谈多线程模型之生产者消费者(单一生产者和单一消费者)(c++11实现) 再谈多线程模型之生产者消费 ...