hadoop和Hive的数据处理流程
需求
场景:统计每日用户登陆总数
每分钟的原始日志内容如下:
http://www.blue.com/uid=xxxxxx&ip=xxxxxx
假设只有两个字段,uid和ip,其中uid是用户的uid,是用户的唯一标识,ip是用户的登陆ip,每日的记录行数是10亿,要统计出一天用户登陆的总数。
处理流程
建表
那么我们首先要在hive里建表,建表语句如下:
CREATE TABLE login ( uid STRING, ip STRING ) PARTITIONED BY (dt STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
其实表名是login,字段之间以,隔开,存储是TEXT,其次还以dt这个字段作为分区。
创建成功之后,会看到hdfs上创建了/user/hive/warehouse/login这个目录。
格式化原始日志
将每天的每分钟的原始日志,转换成以下文件格式
123,17.6.2.6 112,11.3.6.2 ………..
根据文件大小,合并文件,例如合并为24个文件。
入库
格式完毕,就可以把数据入库到hive了,假设今天是执行命令
LOAD DATA INPATH '/data/login/20120713/*' OVERWRITE INTO TABLE login PARTITION (dt='20120713');
执行成功会,转换过的文件会上传到hdfs的/user/hive/warehouse/login/dt=20120713这个目录里。
分析
在hive执行以下语句
select count(distinct uid) from login where dt=’ 20120713’;
使用dt这个分区条件查询,就可以避免hive去查询其他分区的文件,减少IO操作,这个是hive分区很重要的特性,也是以天为单位,作为login表分区的重要意义。
执行完毕后,就可以在命令里出现结果,一般通过管道执行hive shell命令,读取管道的内容,把结果入库到mysql里就完成了分析了。
来源:http://www.cnblogs.com/ggjucheng/archive/2012/07/25/2608757.html#2601110
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Business Intelligence/Big Data in 2013 and Beyond
原文在这里 By Serhiy Haziyev, Director of Software Architecture atSoftServe, Inc.\\ December 2012 Business Intelligence & Big Data is a current hot trend among multiple technology enabled enterprises and ISVs. In this article we will briefly walk through the top three Business Intelligence trends and solutions that will undoubtedly be still important in 2013. Over the past two years we have witnessed a rapid emergence of Business Intelligence, despite the fact that the term was coined as far back...
- 下一篇
解决办法:Flex4使用Efflex_v0.03.swc (Fx4/FP10),在该命名空间中多次定义了组件 MotionPath……
原文:http://hi.baidu.com/mhl29/item/626ea382bec5d1cdee083de1 问题: 在该命名空间中多次定义了组件 SimpleMotionPath。删除到 spark.effects.animation:SimpleMotionPath 或 spark.effects:SimpleMotionPath 的映射. 描述: 在Flex4使用Efflex_v0.03.swc (Fx4/FP10)的时候,报的一个错误。 解决办法: 1. 解压 Efflex_v0.03.swc; 2.编辑 catalog.xml 文件; 3. 删除下面两行: <component className="spark.effects:MotionPath" name="MotionPath" uri="library://ns.adobe.com/flex/spark" /> <component className="spark.effects:SimpleMotionPath" name="SimpleMotionPath" uri="li...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题