hadoop2.20+hive+sqoop+mysql数据处理案例
一、业务说明
使用Hadoop2及其他开源框架,对本地的日志文件进行处理,将处理后需要的数据(PV、UV...)重新导入到关系型数据库(Mysql)中,使用Java程序对结果数据进行处理,组织成报表的形式在数据后台进行展示。
二、为什么使用Hadoop(开发动机)
现有的日志处理方式,是采用纯的java程序来计算的,对于大数据的日志文件来说,这种方案在处理速度、IO占用、数据备份及资源利用率方面都有一定的缺陷;
相比之下使用Hadoop完成数据存储和计算有以下的好处:
(1)高可靠性:Hadoop支持对数据的多副本备份;
(2)高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计 的节点中。
(3)高效性:通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快 速。
(4)高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
(5)高资源利用率:管理员可以根据当前服务器的配置,来设置不同的资源调度方案(yarn),做到资源利用最大化。
三、数据处理流程图
四、类目贡献率案例流程
一、案例业务目标:
统计2014年12月16日 全天,用户点击数top20的商品类别条目
二、开发步骤
(1)将2014年12月16日的日志(约16G)上传到HDFS文件系统的 /input/log_2014-12-16目录下
(2)、编写MapReduce程序清洗数据
程序逻辑分析:
筛选出日志字段中url包含?id=...的行,该url表示的含义为用户点击了某个商品类目为id的条目,程序的目标是只筛选出含有此url的行数据,对于不包含的行将舍弃。 清洗后的数据存放在HDFS的 /output/cleanItem_2014_12_16目录下(清洗后的数据约为140MB)
(3)、将清洗后的数据映射到Hive表中
进入hive的client端,建立一个外部分区表mmb_ordercontribute,这个表的字段与日志的字段一一对应,但会多一个data的分区字段,这相当于Mysql中的索引,当按照日期查询时,效率会高,以下是在hive中,mmb_ordercontribute的建表语句:
如图所示,表的映射路径location指向了清洗后的数据目录
(4)操作hive表数据
数据经过映射后,就可以像mysql等数据库一样通过sql语句的形式来处理表数据了,比如:
统计当天所有用户访问条目的总次数:
统计的结果为:904423
虽然是一个类似mysql的查询语句,但是处理的流程和mysql是天差地别的,hive会将这条语句解析成一个MapReduce程序进行统计,如图所示,hive处理完这个查询cup使用的总时间为6分钟左右,而分配到逻辑cpu上,实际使用的时间为28.5秒,如果去除mapreduce的解析和准备工作,mapreduce的执行时间是非常少的。
但hive并不是所有的sql语句都被映射成mapreduce程序,唯一的例外(不配置的话)就是:SELECT * FROM table_name LIMIT;因为这只是在截取表的前几条数据而已;
(5)使用Hive处理清洗数据并导出到临时表
真正需要的数据将在此步得出,即:统计出top20的用户点击类目,将统计出的数据作为hive的一张临时表:
item_20141216表存储,备后用:
sql语句:
CREATE TABLE
item_20141216
AS SELECT
itemId,COUNT(1) as nums
FROM
mmb_ordercontribute
GROUP BY
itemId
ORDER BY
nums DESC;
导出后的表item_20141216 存放在hive的默认数据仓库下:
注:每行数据其实由两部分组成,行号和数量,看着像一个数字是因为hive表字段的分隔符不是空格或者tab键,而是 \001
(6)使用sqoop将临时表数据导出到mysql对应的表中
在mysql中创建与item_20141216对应的表
CREATE TABLE `item_contribute` (
`itemId` varchar(11) default NULL COMMENT '条目id',
`nums` int(11) default NULL COMMENT '出现的次数'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
进入sqoop客户端执行一下命令输入连接信息:
sqoop export --connect jdbc:mysql://master:3306/test --username hive --password 123456 --table item_contribute --fields-terminated-by '\001' --export-dir '/user/hive/warehouse/db1.db/item_20141216';
将会看到mysql表中的数据被填充:
(7)接下来就可以利用java程序将数据组织成报表进行展示了!
hadoop2.20+hive+sqoop+mysql数据处理案例相关推荐
- 第十二章 结合flume+mapreduce+hive+sqoop+mysql的综合实战练习
简介: 项目大致过程是:flume监控日志文件,定时把文件清洗后上传到hdfs上,上传清晰后的数据是格式化的,可被hive识别,然后hive创建表,写脚本,执行hql语句,把执行结果写到hdfs上,最 ...
- [置顶] HADOOP大数据离线分析+实时分析框架;Hadoop+Flume+Kafka+Storm+Hive+Sqoop+mysql/oracle
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 离线分析框架搭建 hadoop集群搭建部署 Hadoop HA部署 Hive安装部署 Sqoop组件安装部署 实时分析框架搭建 ...
- HADOOP大数据离线分析+实时分析框架;Hadoop+Flume+Kafka+Storm+Hive+Sqoop+mysql/oracle
离线分析框架搭建 hadoop集群搭建部署 Hadoop HA部署 Hive安装部署 Sqoop组件安装部署 实时分析框架搭建 storm kafka kafka安装配置 storm集群安装部署
- 大数据基础(二)hadoop, mave, hbase, hive, sqoop在ubuntu 14.04.04下的安装和sqoop与hdfs,hive,mysql导入导出
hadoop, mave, hbase, hive, sqoop在ubuntu 14.04.04下的安装 2016.05.15 本文测试环境: hadoop2.6.2 ubuntu 14.04.04 ...
- 大数据案例——Hive、MySQL、HBase数据互导
本文是基于教程大数据案例--本地文件上传hive数据库,对数据在Hive,MySQL,HBase之间的互导进行进阶版的学习.数据集:淘宝用户点击商品操作数据集,共30万条记录.如果没有安装MySQL, ...
- Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)(十八)...
把MySQL里的数据导入到HDFS 1.使用MySQL工具手工导入 把MySQL的导出数据导入到HDFS的最简单方法就是,使用命令行工具和MySQL语句. 为了导出整个数据表或整个数据库的内容,MyS ...
- Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
Hadoop学习笔记-20.网站日志分析项目案例(一)项目介绍 网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edis ...
- sqoop mysql where_Sqoop基本语法简介
1.查看命令帮助 [hadoop@hadoop000 ~]$ sqoop help usage: sqoop COMMAND [ARGS] Available commands: codegen Ge ...
- hive sqoop导出 postgresql精度丢失_Mysql 与 hadoop 数据同步(迁移),你需要知道 Sqoop...
上篇文章 Mysql 到 Hbase 数据如何实时同步,强大的 Streamsets 告诉你 我们说到了如何使用 Streamsets 来进行 mysql 到 hbase 的数据实时同步(迁移).使用 ...
最新文章
- url传递中文的解决方案
- java try-with-resource语句使用
- 树莓派远程连接的三种方式总结
- 服务器采购项目技术方案,小型机服务器采购项目技术方案.doc
- (转载)FPGA基础知识------PS/2基础知识
- REMarkerClusterer
- ride中for循环的使用_robotframework-ride使用(Builtin标准库)
- php做网页的流畅,Easying轻量流畅
- JavaScript实现简易计算器
- 服务式GIS实践与发展——REST 服务
- java tomcat热部署_intellij idea tomcat热部署配置教程
- java连接Hbase操作数据库的全过程---搭建hbase数据库
- 航海王热血航线服务器维护怎么办,航海王热血航线无法登录怎么办
- Matlab通过整除判断倍数
- Apache2 + PHP之伪静态
- Scrapy爬取北京公交并保存MYSQL数据库实例
- Kubernetes-蔚来汽车的Kubernetes实践
- java 连接chatgpt
- Python程序员是科班出身好,还是去培训班好?
- FireFly RK3399装CUPS使用HP M1136打印机遇到的坑
热门文章
- 计算机无法还原,降级为Windows 7的计算机无法引导至Windows 10恢复介质
- POJ3197(连分数表示)
- 《qss样式表笔记大全(二):可设置样式的窗口部件列表(上)(包含相关示例)》
- redis部署架构总结
- H.264码流结构解析
- MFC内嵌web页面
- Linux 内存管理 | 物理内存管理:物理内存、内存碎片、伙伴系统、slab分配器
- [三]RabbitMQ-客户端源码之ChannelManager
- MPAI正式启动端到端的AI编码标准
- 【直播预告 | 今天10:30】多媒体技术 PI 第一期:OSS圆桌