一个简单的例子!

环境:CentOS6.5

Hadoop集群、Hive、R、RHive,具体安装及调试方法见博客内文档。

1、分析题目

--有一个用户数据样本(表名huserinfo)10万数据左右;
--其中有一个字段:身份证号(id_card)
--身份证号前两位代表:省,例如:11北京,12天津,13河北;
--身份证前x位对照表(表名hidcard_province)
--要求1:计算出每个省份出现的次数,并按从大到小排序取前30个;
--要求2:使用R画出柱状图。

2、编写Hive提取数据脚本:hive_getdata.sql

--创建临时表
DROP TABLE if exists tmp.t_province;
CREATE TABLE tmp.t_province(
id int,
p_name string,
cnt int
) COMMENT '用户数据中省份出现次数临时表' --将提取到的数据保存到临时表中
insert overwrite table tmp.t_province
select t1.cid, t2.province, t1.cnt from(
--取出前30条
select y.rownum, y.cid, y.cnt from(
--排序
select x.cid, x.cnt, row_number() over (distribute by x.cnt sort by x.cnt desc) as rownum from(
--分组
select a1.cid, count(1) as cnt from
--取数据
(select substring(id_card, 0, 2) as cid from bdm.huserinfo)a1
group by a1.cid
)x
)y where y.rownum <= 30
)t1
join bdm.hidcard_province t2 on t2.id = t1.cid

运行:

[root@Hadoop-NN-01 ~]$ hive -f hive_getdata.sql

查看数据如下图:

hive> select * from tmp.t_province limit 10;

3、编写R语言绘图脚本:r_draw.r

#!/usr/bin/Rscript
library(RHive);  #加载rhive包
rhive.connect(host ='192.168.100.20');  #rhive连接hive
x <- rhive.query('select id from tmp.t_province')
x <- x$id
y <- rhive.query('select cnt from tmp.t_province')
y <- y$cnt library(Cairo)   #加载图形渲染库 png("r-province-pic.png", width=960, height=600)  #生成图片
#说明:此里可以处理很多问题,可以使用很多算法解决很多的问题,具体算法我就不写了,只简单画个柱柱图,把代码跑通即可!
barplot(beside=TRUE,
y,   #纵轴
names.arg=x,   #横轴
ylim=c(0,10000)  #纵轴取值范围  还有其它参数,可以根据自己需求设置。
) title(xlab="province name") #横轴名称
title(ylab="people number") #纵轴名称 #图例参数
lbls <- round(y/sum(y)*100)
lbls <- paste(lbls,"%",sep="")
lbls <- paste(x, lbls) #设置图例 其它参数根据自己需求设置
legend("topright", lbls) dev.off() #关闭绘图设备
rhive.close() #关闭hive连接

运行:

[root@Hadoop-NN-01 ~]$ Rscript r_draw.r

展示成果:

至此,一个简单的Hadoop-Hive-R实例完成!

PS:R下面中文乱码的问题仍在解决中!

如何使用Hive&R从Hadoop集群中提取数据进行分析的更多相关文章

  1. Hadoop集群中添加硬盘

    Hadoop工作节点扩展硬盘空间 接到老板任务,Hadoop集群中硬盘空间不够用,要求加一台机器到Hadoop集群,并且每台机器在原有基础上加一块2T硬盘,老板给力啊,哈哈. 这些我把完成这项任务的步 ...

  2. 在Hadoop集群中添加机器和删除机器

    本文转自:http://www.cnblogs.com/gpcuster/archive/2011/04/12/2013411.html 无论是在Hadoop集群中添加机器和删除机器,都无需停机,整个 ...

  3. hadoop集群中客户端修改、删除文件失败

    这是因为hadoop集群在启动时自动进入安全模式 查看安全模式状态:hadoop fs –safemode get 进入安全模式状态:hadoop fs –safemode enter 退出安全模式状 ...

  4. hadoop集群中动态添加节点

    集群的性能问题需要增加服务器节点以提高整体性能 https://www.cnblogs.com/fefjay/p/6048269.html hadoop集群之间hdfs文件复制 https://www ...

  5. hadoop集群中动态添加新的DataNode节点

    集群中现有的计算能力不足,须要另外加入新的节点时,使用例如以下方法就能动态添加新的节点: 1.在新的节点上安装hadoop程序,一定要控制好版本号,能够从集群上其它机器cp一份改动也行 2.把name ...

  6. hadoop 集群中数据块的副本存放策略

    HDFS采用一种称为机架感知(rack-aware)的策略来改进数据的可靠性.可用性和网络带宽的利用率.目前实现的副本存放策略只是在这个方向上的第一步.实现这个策略的短期目标是验证它在生产环境下的有效 ...

  7. 集群中Session共享解决方案分析

    一.为什么要Session共享 Session存储在服务器的内存中,比如Java中,Session存放在JVM的中,Session也可以持久化到file,MySQL,redis等,SessionID存 ...

  8. Hadoop集群中Hbase的介绍、安装、使用

    导读 HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. 一.Hbase ...

  9. hadoop集群中zkfc的作用和工作过程

    一. 简单了解NameNode的ZKFC机制 NameNode的HA可以个人认为简单分为共享editLog机制和ZKFC对NameNode状态的控制 一般导致NameNode切换的原因 ZKFC的作用 ...

随机推荐

  1. db2 v11 安装测试

    一.准备环境: 修改/etc/hosts如下配置: #vi /etc/hosts 127.0.0.1    localhost 修改系统内核参数 # vi /etc/sysctl.conf kerne ...

  2. MyEclipse中的几种查找方法

    在编程中常常需要用到查找功能,这里根据日常的使用总结一下常用的集中查找方法 Ctrl+H:在MyEclipse中打开Search弹出框,或者在菜单中打开Search弹出框, 定位到 File Sear ...

  3. Entity Framework Core的贴心:优雅处理带默认值的数据库字段

    对于用于保存记录添加时间的数据库日期字段,我们通常会设置一个 GETDATE() 的默认值,而不是在应用程序的代码中获取当前时间进行保存,这样可以避免由于web服务器时钟不同步引起的时间偏差. Ent ...

  4. cc2640 细节展示

    1. 对于 cc2640内部有两个单片机,一个m3负责内核,另一个是一个16位单片机,应该是msp430可以替代主机完成一些数据采集,adc采集,iic等等功能,传感器软件内部可以进行外设配置,并使用 ...

  5. BZOJ 2457 - 双端队列 - [思维题]

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2457 Description Sherry现在碰到了一个棘手的问题,有N个整数需要排序. ...

  6. Will vs Be Going To vs Present Continuous: Talk About the Future in English

    https://www.youtube.com/watch?v=UISiuiPd_FY will 说话的当下决定的将来要做什么,in the moment be going to 有意图去做,但没有计 ...

  7. rtd1296 mtd 设备驱动分析

    mtd 分区一般采用3种方式实现 1.内核写死  mtd_partition 2.u-boot 传参 为了使kernel能够解析mtdparts信息,我们需要将内核中的Device Drivers - ...

  8. [potatos][flex][TBC] 语义分析词法分析 flex

    FLEX: The Fast Lexical Analyzer https://github.com/westes/flex 这并不是我的人生中第一次遇见flex,好多工程中,我都发现他们用到了fle ...

  9. py 正则表达式 List的使用, cxfreeze打包

    从index.html当做检索出压缩文件,index.html的内容如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN& ...

  10. spring boot动态数据源方案

    动态数据源 1.背景 动态数据源在实际的业务场景下需求很多,而且想要沟通多数据库确实需要封装这种工具,针对于bi工具可能涉及到从不同的业务库或者数据仓库中获取数据,动态数据源就更加有意义. 2.依赖 ...