R + Hive = RHive

支持原创:http://blog.fens.me/nosql-r-hive/

R利剑NoSQL系列文章 之 Hive

  1. Hive介绍
  2. Hive安装
  3. RHive安装
  4. RHive函数库
  5. 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的更多相关文章

  1. CentOS6.5安装RHive

    1.安装RServe软件包(各个节点都要安装) [root@Hadoop-NN-01 mysofts] # R CMD INSTALL Rserve_1.7-2.tar.gz 2.设置环境变量 [ro ...

  2. 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 ...

  3. 【翻译】Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么?

    0.前言 虽然很早就知道R被微软收购,也很早知道R在统计分析处理方面很强大,开始一直没有行动过...直到 直到12月初在微软技术大会,看到我软的工程师演示R的使用,我就震惊了,然后最近在网上到处了解和 ...

  4. Hadoop学习路线图

    Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括, ...

  5. R统计分析处理

    [翻译]Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么? 阅读目录 0.前言 1.集成开发环境 2.语法 3.数据操作 4.图形显示 5.HTML部件 ...

  6. Hadoop家族 路线图(转)

    主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项 ...

  7. Hive学习路线图(转)

    Hadoophivehqlroadmap学习路线图   1 Comment Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig ...

  8. 【转】Hive学习路线图

    原文博客出自于:http://blog.fens.me/hadoop-hive-roadmap/ 感谢! Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Ha ...

  9. Hadoop家族学习路线图--转载

    原文地址:http://blog.fens.me/hadoop-family-roadmap/ Sep 6, 2013 Tags: Hadoophadoop familyroadmap Comment ...

随机推荐

  1. 基于SSH协议的端口转发

    [前言] 最近一直在使用ssh协议的端口转发(隧道)功能,完成对内网空透等.这篇文章将主要讲解3种常用的ssh tunnelling使用方法和基本原理. 在介绍具体内容前,我先奉上端口转发的常用情景: ...

  2. IOS本地日志记录方案

    我们在项目中日志记录这块也算是比较重要的,有时候用户程序出什么问题,光靠服务器的日志还不能准确的找到问题. 现在一般记录日志有几种方式: 1.使用第三方工具来记录日志,如腾讯的Bugly,它是只把程序 ...

  3. ubuntu 笔记

    Ubuntu学习之路还很长,做个笔记也不亏 terminal tab 补全忽略大小写: 在 /ect/inputrc文件中添加或修改 'set completion-ignore-case on' U ...

  4. win8和ubuntu双系统

    硬盘安装的话只要分够内存和做好开机启动项就好了,u盘安装要注意分区(挂载)了推荐: http://wenku.baidu.com/view/5052f19b51e79b8968022623.html ...

  5. Windows搭建以太坊的私有链环境

    1.下载Geth.exe 运行文件,并安装 https://github.com/ethereum/go-ethereum/releases/ 下载后,只有一个Geth.exe的文件 2.cmd进入按 ...

  6. Spring中一个类的注入和引用是不一样的

    1.在Spring管理下的bean需要以下面这种方式引入(一种注入方式): private MgrService mgrService; public MgrService getMgrService ...

  7. mysql技术内幕InnoDB存储引擎-阅读笔记

    mysql技术内幕InnoDB存储引擎这本书断断续续看了近10天左右,应该说作者有比较丰富的开发水平,在源码级别上分析的比较透彻.如果结合高可用mysql和高性能mysql来看或许效果会更好,可惜书太 ...

  8. css gray,grayscale,css变灰兼容大部分浏览器

    css gray,grayscale,css变灰兼容大部分浏览器 html { filter: url("data:image/svg+xml;utf8,<svg xmlns=\'ht ...

  9. python多线程学习笔记(超详细)

    python threading 多线程 一. Threading简介 首先看下面的没有用Threading的程序 ):  s += i  time.sleep(  ):  s += i  time. ...

  10. 分类算法——k最近邻算法(Python实现)(文末附工程源代码)

    kNN算法原理 k最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类,思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样 ...