7.5 rhbase安装与使用

问题

R如何访问HBase?

引言

HBase是Hadoop家族中的一个分布式数据库产品,HBase支持高并发读写,列式数据存储,高效的索引,自动分片,自动Region迁移等许多优点,已经越来越多地被界业认可,并被实际应用。

7.5.1 HBase环境准备

首先环境准备,这里继续7.2节中的RHadoop的环境。

  • Linux Ubuntu 12.04.2 LTS 64bit server
  • Java JDK 1.6.0_45
  • Hadoop 1.1.2
  • hbase-0.94.2
  • thrift-0.8.0

关于HBase的安装和配置,请参考附录H。查看HBase服务器环境。用 bin/start-hbase.sh 命令,启动HBase服务器,默认端口: port=60000。

~ /home/conan/hadoop/hadoop-1.1.2/bin/start-all.sh  # 启动Hadoop
~ /home/conan/hadoop/hbase-0.94.2/bin/start-hbase.sh  # 启动HBase
~ /home/conan/hadoop/hbase-0.94.2/bin/hbase-daemon.sh start thrift  # 启动HBase的Thrift服务
~ jps  # 查看hbase进程
12041 HMaster
12209 HRegionServer
13222 ThriftServer
31734 TaskTracker
31343 DataNode
31499 SecondaryNameNode
13328 Jps
31596 JobTracker
11916 HQuorumPeer
31216 NameNode

7.5.2 rhbase安装

在7.2节中,我们已经下载了rhbase-1.1.tar.gz包,暂时跳过了rhbase部分的介绍,接下来我们继续安装rhbase。

~ R CMD INSTALL rhbase_1.1.1.tar.gz
配置RHadoop的环境,只一条命令就完成rhbase的安装!

7.5.3 rhbase函数库

rhbase支持的函数有16个,可以实现对hbase的各种操作。

1. rhbase的16个函数

下面列出了这16个函数,并与HBase的命令做了对比说明。

hb.compact.table hb.describe.table hb.insert hb.regions.table hb.defaults hb.get hb.insert.data.frame hb.scan hb.delete hb.get.data.frame hb.list.tables hb.scan.ex hb.delete.table hb.init hb.new.table hb.set.table.mode

2. Hbase和rhbase的基本操作对比:

HBase Shell:  # 建表
create 'student_shell','info'

rhbase:
hb.new.table("student_rhbase","info")

HBase Shell:  # 列出所有表
list

rhbase:
hb.list.tables()

HBase Shell:  # 显示表结构
describe 'student_shell'

rhbase:
hb.describe.table("student_rhbase")

HBase Shell:  # 插入一条数据
put 'student_shell','mary','info:age','19'

rhbase:
hb.insert("student_rhbase",list(list("mary","info:age", "24")))

HBase Shell:  # 读取数据
get 'student_shell','mary'

rhbase:
hb.get('student_rhbase','mary')

HBase Shell:  # 删除表(HBASE需要两条命令,rhbase仅是一个操作)
disable 'student_shell'
drop 'student_shell'

rhbase:
hb.delete.table('student_rhbase')

3. 执行HBase的基本操作

我们分别使用HBase Shell和rhbase的对HBase数据库进行基本的函数操作。先用HBase Shell进行操作。

``` ~ /home/conan/hadoop/hbase-0.94.18/bin/hbase shell # 启动HBase shell

create 'studentshell','info' # 建表 list TABLE student_shell describe 'student_shell' # 显示表结构 DESCRIPTION ENABLED {NAME => 'student_shell', FAMILIES => [{NAME => 'info', DATA_BLOCK true ENCODING => 'NONE', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0' , VERSIONS => '3', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => '2147483647', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536 ', IN_MEMORY => 'false', ENCODE_ON_DISK => 'true', BLOCKCACHE => 't rue'}]} put 'student_shell','mary','info:age','19' # 插入一条数据 get 'student_shell','mary' # 查询数据 COLUMN CELL info:age timestamp=1365414964962, value=19 disable 'student_shell' # 删除表 drop 'student_shell' 接下来用rhbase包的函数进行同样的操作。 ~ R # 启动R程序

library(rhbase) # 加载rhbase hb.init() # 在R语言环境中初始化hbase

attr(,"class") [1] "hb.client.connection"

hb.new.table("student_rhbase","info",opts=list(maxversions=5,x=list(maxversions=1L, compression='GZ',inmemory=TRUE))) # 建表 [1] TRUE

hb.list.tables() # 查看所有的表 $student_rhbase maxversions compression inmemory bloomfiltertype bloomfiltervecsize info: 5 NONE FALSE NONE 0 bloomfilternbhashes blockcache timetolive info: 0 FALSE -1

hb.describe.table("student_rhbase") # 查看表结构 maxversions compression inmemory bloomfiltertype bloomfiltervecsize info: 5 NONE FALSE NONE 0 bloomfilternbhashes blockcache timetolive info: 0 FALSE -1

hb.insert("student_rhbase",list(list("mary","info:age", "24"))) # 插入一条数据 [1] TRUE

hb.get('student_rhbase','mary') # 查询数据 [[1]] [[1]][[1]] [1] "mary" [[1]][[2]] [1] "info:age" [[1]][[3]] [[1]][[3]][[1]] [1] "24"

hb.delete.table('student_rhbase') # 删除表 [1] TRUE

这样我们就实现了R语言对HBase的访问操作。

results matching ""

    No results matching ""