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 ...
随机推荐
- 3403: [Usaco2009 Open]Cow Line 直线上的牛
3403: [Usaco2009 Open]Cow Line 直线上的牛 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 71 Solved: 62[S ...
- UITextField输入限制/小数/首位等
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementS ...
- JQuery OOP 及 OOP思想的简易理解
在项目维护的时候,看到通篇的function实际上是非常费(痛)劲(苦),个人对于前端也不是特别熟悉,就想着JQuery能否也建立OOP的写法? 目的便于日后代码维护管理,就算不为了自己,日后交接后也 ...
- 在 sublime text 上添加 Package Control
https://packagecontrol.io/installation 打开 View > Show Consolemenu 粘贴如下文本,回车 import urllib.request ...
- BananaPi python-Mysql 操作库
BananPi python-Mysql 操作库 1.首先mysql.python环境安装 2.下载MySQL-python-1.2.3.tar.gz 并解压 tar xfz MySQL-python ...
- Day4 数据库的建立||数据库对外查询||使用命令行来操作数据库
###数据库的创建 建立一个项目 先进行测试,测试新项目是否可以成功运行 创建一个PersonContrary包,并建立一个Person类实现BaseColumns借口,在此类中添加所有的表的列名,并 ...
- ELK5.0安装教程
ELK升级后,安装稍微发生了点变化,在Elasticsearch中增加了很多资源上的限制,其他的倒是没什么变化.不过所有的安装都是基于JDK已经安装完的情况,且为1.8版本. 安装Elasticsea ...
- 从PRINCE2引起项目失败的共性原因?
一.项目与组织的关键战略优先排序之间缺乏明确的联系 项目必须体现和贯彻发起者的目标.每个项目是怎样支持这些目标的,怎样对项目进行优先排序能提供最大的回报,这些都应该能明确地表述出来. PRINCE2持 ...
- IOS开发创建开发证书及发布App应用(六)——打包应用
6.打包应用 如下图,生成之后点击下面红框的按钮,按时间排序,然后点最新的一次生成 从右侧生成日志中找到如下图红框标识的部分,找到 -output ,把下面浅蓝色选中,这是app生成的文件夹路径 点击 ...
- 反射实现 Data To Model
调用 : public ActionResult Index() { DataTable dt = new DataTable(); dt.Columns.Add("Name"); ...