RHive
R + Hive = RHive
支持原创:http://blog.fens.me/nosql-r-hive/
R利剑NoSQL系列文章 之 Hive

- Hive介绍
- Hive安装
- RHive安装
- RHive函数库
- RHive基本使用操作
1. Hive介绍
Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
Hive 没有专门的数据格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也允许用户指定数据格式
上面内容摘自 百度百科(http://baike.baidu.com/view/699292.htm)
hive与关系数据库的区别:
- 数据存储不同:hive基于hadoop的HDFS,关系数据库则基于本地文件系统
- 计算模型不同:hive基于hadoop的mapreduce,关系数据库则基于索引的内存计算模型
- 应用场景不同:hive是OLAP数据仓库系统提供海量数据查询的,实时性很差;关系数据库是OLTP事务系统,为实时查询业务服务
- 扩展性不同:hive基于hadoop很容易通过分布式增加存储能力和计算能力,关系数据库水平扩展很难,要不断增加单机的性能
2. Hive安装
Hive是基于Hadoop开发的数据仓库产品,所以首先我们要先有Hadoop的环境。

Hadoop安装,请参考:Hadoop环境搭建, 创建Hadoop母体虚拟机
Hive的安装,请参考:Hive安装及使用攻略
Hadoop-1.0.3的下载地址
http://archive.apache.org/dist/hadoop/core/hadoop-1.0.3/
Hive-0.9.0的下载地址
http://archive.apache.org/dist/hive/hive-0.9.0/
Hive安装好后
启动hiveserver的服务
~ nohup hive --service hiveserver &
Starting Hive Thrift Server
打开hive shell
~ hive shell
Logging initialized using configuration in file:/home/conan/hadoop/hive-0.9.0/conf/hive-log4j.proper ties
Hive history file=/tmp/conan/hive_job_log_conan_201306261459_153868095.txt
#查看hive的表
hive> show tables;
hive_algo_t_account
o_account
r_t_account
Time taken: 2.12 seconds
#查看o_account表的数据
hive> select * from o_account;
1 abc@163.com 2013-04-22 12:21:39
2 dedac@163.com 2013-04-22 12:21:39
3 qq8fed@163.com 2013-04-22 12:21:39
4 qw1@163.com 2013-04-22 12:21:39
5 af3d@163.com 2013-04-22 12:21:39
6 ab34@163.com 2013-04-22 12:21:39
7 q8d1@gmail.com 2013-04-23 09:21:24
8 conan@gmail.com 2013-04-23 09:21:24
9 adeg@sohu.com 2013-04-23 09:21:24
10 ade121@sohu.com 2013-04-23 09:21:24
11 addde@sohu.com 2013-04-23 09:21:24
Time taken: 0.469 seconds
3. RHive安装
请提前配置好JAVA的环境:
~ java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode)
安装R:Ubuntu 12.04,请更新源再下载R2.15.3版本
~ sudo sh -c "echo deb http://mirror.bjtu.edu.cn/cran/bin/linux/ubuntu precise/ >>/etc/apt/sources.list"
~ sudo apt-get update
~ sudo apt-get install r-base-core=2.15.3-1precise0precise1
安装R依赖库:rjava
#配置rJava
~ sudo R CMD javareconf
#启动R程序
~ sudo R
install.packages("rJava")
安装RHive
install.packages("RHive")
library(RHive)
Loading required package: rJava
Loading required package: Rserve
This is RHive 0.0-7. For overview type ‘?RHive’.
HIVE_HOME=/home/conan/hadoop/hive-0.9.0
call rhive.init() because HIVE_HOME is set.
由于RHive已经从CRAN上移除,需要动手下载安装,下载地址:https://cran.r-project.org/src/contrib/Archive/RHive/。我们需要动手下载RHive_0.0-7.tar.gz包,然后通过命令进行安装。
# 安装RHive
~ R CMD INSTALL RHive_0.0-7.tar.gz
4. RHive函数库
rhive.aggregate rhive.connect rhive.hdfs.exists rhive.mapapply
rhive.assign rhive.desc.table rhive.hdfs.get rhive.mrapply
rhive.basic.by rhive.drop.table rhive.hdfs.info rhive.napply
rhive.basic.cut rhive.env rhive.hdfs.ls rhive.query
rhive.basic.cut2 rhive.exist.table rhive.hdfs.mkdirs rhive.reduceapply
rhive.basic.merge rhive.export rhive.hdfs.put rhive.rm
rhive.basic.mode rhive.exportAll rhive.hdfs.rename rhive.sapply
rhive.basic.range rhive.hdfs.cat rhive.hdfs.rm rhive.save
rhive.basic.scale rhive.hdfs.chgrp rhive.hdfs.tail rhive.script.export
rhive.basic.t.test rhive.hdfs.chmod rhive.init rhive.script.unexport
rhive.basic.xtabs rhive.hdfs.chown rhive.list.tables
rhive.size.table
rhive.big.query rhive.hdfs.close rhive.load rhive.write.table
rhive.block.sample rhive.hdfs.connect rhive.load.table
rhive.close rhive.hdfs.du rhive.load.table2
Hive和RHive的基本操作对比:
#连接到hive
Hive: hive shell
RHive: rhive.connect("192.168.1.210")
#列出所有hive的表
Hive: show tables;
RHive: rhive.list.tables()
#查看表结构
Hive: desc o_account;
RHive: rhive.desc.table('o_account'), rhive.desc.table('o_account',TRUE)
#执行HQL查询
Hive: select * from o_account;
RHive: rhive.query('select * from o_account')
#查看hdfs目录
Hive: dfs -ls /;
RHive: rhive.hdfs.ls()
#查看hdfs文件内容
Hive: dfs -cat /user/hive/warehouse/o_account/part-m-00000;
RHive: rhive.hdfs.cat('/user/hive/warehouse/o_account/part-m-00000')
#断开连接
Hive: quit;
RHive: rhive.close()
5. RHive基本使用操作
#初始化
rhive.init()
#连接hive
rhive.connect("192.168.1.210")
#查看所有表
rhive.list.tables()
tab_name
1 hive_algo_t_account
2 o_account
3 r_t_account
#查看表结构
rhive.desc.table('o_account');
col_name data_type comment
1 id int
2 email string
3 create_date string
#执行HQL查询
rhive.query("select * from o_account");
id email create_date
1 1 abc@163.com 2013-04-22 12:21:39
2 2 dedac@163.com 2013-04-22 12:21:39
3 3 qq8fed@163.com 2013-04-22 12:21:39
4 4 qw1@163.com 2013-04-22 12:21:39
5 5 af3d@163.com 2013-04-22 12:21:39
6 6 ab34@163.com 2013-04-22 12:21:39
7 7 q8d1@gmail.com 2013-04-23 09:21:24
8 8 conan@gmail.com 2013-04-23 09:21:24
9 9 adeg@sohu.com 2013-04-23 09:21:24
10 10 ade121@sohu.com 2013-04-23 09:21:24
11 11 addde@sohu.com 2013-04-23 09:21:24
#关闭连接
rhive.close()
[1] TRUE
创建临时表
rhive.block.sample('o_account', subset="id<5")
[1] "rhive_sblk_1372238856"
rhive.query("select * from rhive_sblk_1372238856");
id email create_date
1 1 abc@163.com 2013-04-22 12:21:39
2 2 dedac@163.com 2013-04-22 12:21:39
3 3 qq8fed@163.com 2013-04-22 12:21:39
4 4 qw1@163.com 2013-04-22 12:21:39
#查看hdfs的文件
rhive.hdfs.ls('/user/hive/warehouse/rhive_sblk_1372238856/')
permission owner group length modify-time
1 rw-r--r-- conan supergroup 141 2013-06-26 17:28
file
1 /user/hive/warehouse/rhive_sblk_1372238856/000000_0
rhive.hdfs.cat('/user/hive/warehouse/rhive_sblk_1372238856/000000_0')
1abc@163.com2013-04-22 12:21:39
2dedac@163.com2013-04-22 12:21:39
3qq8fed@163.com2013-04-22 12:21:39
4qw1@163.com2013-04-22 12:21:39
按范围分割字段数据
rhive.basic.cut('o_account','id',breaks='0:100:3')
[1] "rhive_result_20130626173626"
attr(,"result:size")
[1] 443
rhive.query("select * from rhive_result_20130626173626");
email create_date id
1 abc@163.com 2013-04-22 12:21:39 (0,3]
2 dedac@163.com 2013-04-22 12:21:39 (0,3]
3 qq8fed@163.com 2013-04-22 12:21:39 (0,3]
4 qw1@163.com 2013-04-22 12:21:39 (3,6]
5 af3d@163.com 2013-04-22 12:21:39 (3,6]
6 ab34@163.com 2013-04-22 12:21:39 (3,6]
7 q8d1@gmail.com 2013-04-23 09:21:24 (6,9]
8 conan@gmail.com 2013-04-23 09:21:24 (6,9]
9 adeg@sohu.com 2013-04-23 09:21:24 (6,9]
10 ade121@sohu.com 2013-04-23 09:21:24 (9,12]
11 addde@sohu.com 2013-04-23 09:21:24 (9,12]
Hive操作HDFS
#查看hdfs文件目录
rhive.hdfs.ls()
permission owner group length modify-time file
1 rwxr-xr-x conan supergroup 0 2013-04-24 01:52 /hbase
2 rwxr-xr-x conan supergroup 0 2013-06-23 10:59 /home
3 rwxr-xr-x conan supergroup 0 2013-06-26 11:18 /rhive
4 rwxr-xr-x conan supergroup 0 2013-06-23 13:27 /tmp
5 rwxr-xr-x conan supergroup 0 2013-04-24 19:28 /user
#查看hdfs文件内容
rhive.hdfs.cat('/user/hive/warehouse/o_account/part-m-00000')
1abc@163.com2013-04-22 12:21:39
2dedac@163.com2013-04-22 12:21:39
3qq8fed@163.com2013-04-22 12:21:39
RHive的更多相关文章
- CentOS6.5安装RHive
1.安装RServe软件包(各个节点都要安装) [root@Hadoop-NN-01 mysofts] # R CMD INSTALL Rserve_1.7-2.tar.gz 2.设置环境变量 [ro ...
- Ubuntu12.04安装R ,Rstudio, RHive
环境: Ubuntu12.04 R-3.1.0 0.Ubuntu安装R官网的介绍 http://mirrors.ustc.edu.cn/CRAN/ Precise Pangolin (12.04; L ...
- 【翻译】Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么?
0.前言 虽然很早就知道R被微软收购,也很早知道R在统计分析处理方面很强大,开始一直没有行动过...直到 直到12月初在微软技术大会,看到我软的工程师演示R的使用,我就震惊了,然后最近在网上到处了解和 ...
- Hadoop学习路线图
Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括, ...
- R统计分析处理
[翻译]Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么? 阅读目录 0.前言 1.集成开发环境 2.语法 3.数据操作 4.图形显示 5.HTML部件 ...
- Hadoop家族 路线图(转)
主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项 ...
- Hive学习路线图(转)
Hadoophivehqlroadmap学习路线图 1 Comment Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig ...
- 【转】Hive学习路线图
原文博客出自于:http://blog.fens.me/hadoop-hive-roadmap/ 感谢! Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Ha ...
- Hadoop家族学习路线图--转载
原文地址:http://blog.fens.me/hadoop-family-roadmap/ Sep 6, 2013 Tags: Hadoophadoop familyroadmap Comment ...
随机推荐
- Java反射机制深度剖析
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! Java反射机制是Java语言中一种很重要的机制,可能在工作中用到的机会不多,但是在很多框架中都有用到这种机制.我们知道Java是一门静态 ...
- 九度OJ题目1080:进制转换(java)使用BigInteger进行进制转换
题目描述: 将M进制的数X转换为N进制的数输出. 输入: 输入的第一行包括两个整数:M和N(2<=M,N<=36). 下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成 ...
- Python3处理配置文件
1.说明:python3使用configparser模块来处理ini配置文件.2.代码示例:需要生成conf.ini配置文件如下:[config]v1 = 100v2 = abcv3 = truev4 ...
- Xamarin自定义布局系列——PivotPage,多页面切换控件
PivotPage ---- 多页面切换控件 PivotPage是一个多页面切换控件,类似安卓中的ViewPager和UWP中的Pivot枢轴控件. 起初打算直接通过ScrollView+StackL ...
- 多边形剪裁img
<!DOCTYPE html><html><head> <meta charset="utf-8"/> <title>& ...
- 什么是https
我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议. HTTPS简介 HTTPS其实是有两部分组成:HTTP + SSL ...
- pyqt4实现tab界面切换
(转:https://segmentfault.com/q/1010000005143428)
- 【C++】智能指针详解(一):智能指针的引入
智能指针是C++中一种利用RAII机制(后面解释),通过对象来管理指针的一种方式. 在C++中,动态开辟的内存需要我们自己去维护,在出函数作用域或程序异常退出之前,我们必须手动释放掉它,否则的话就会引 ...
- win7下nsis打包exe安装程序教程
下载软件包: NSIS中文版 :https://pan.baidu.com/s/1mitSQU0 装好之后会出现两个软件:Nullsoft Install System 和 VNISEdit 编译环境 ...
- (删)Java线程同步实现二:Lock锁和Condition
在上篇文章(3.Java多线程总结系列:Java的线程同步实现)中,我们介绍了用synchronized关键字实现线程同步.但在Java中还有一种方式可以实现线程同步,那就是Lock锁. 一.同步锁 ...