R语言连接hbase问题疑解

时间:2021-08-16 12:17:51

安装rhbase出现的问题

安装rhbase需事先安装thrift,在此采用yum安装:

# yum -y install thrift thrift-devel

下载rhbase包:https://github.com/RevolutionAnalytics/RHadoop/wiki/Downloads
安装命令:

R CMD INSTALL "rhbase_1.2.1.tar.gz"
In file included from Hbase.cpp:7:0:
Hbase.h:10:24: fatal error: TProcessor.h:
#include <TProcessor.h>
^
compilation terminated.
/usr/lib/R/etc/Makeconf:143: recipe for target 'Hbase.o' failed
make: *** [Hbase.o] Error 1
ERROR: compilation failed for package ‘rhbase’
* removing ‘/home/user/R/x86_64-pc-linux-gnu-library/3.2/rhbase’

会发现报了一个错。
检测下thrift是否安装正确:

# pkg-config --cflags thrift

发现为空,此时则需修改/usr/lib64/pkgconfig/目录下的thrift.pc文件:

将:includedir=/usr/include
修改成:includedir=/usr/include/thrift

再次检测:

# pkg-config --cflags thrift
-I/usr/include/thrift

如上所示为正常;再次安装rhbase:

# R CMD INSTALL "rhbase_1.2.1.tar.gz"

至此,安装应当完成!

连接hbase出现的问题

应数据部门需要,R要调用hbase。因已安装了thrift框架并启动了服务,所以便直接安装了rhbase包,安装完毕后,调用rhbase:

# R
>library(rhbase)
>hb.init()
<pointer: 0x16494a0>
attr(,"class")
[1] "hb.client.connection"
>hb.list.tables()
未定义方法名:"getTableNames"

如上当调用hb.list.tables()时显示未定义方法名:“getTableNames“,调试了半天,没能成功,便询问数据部门同事,如何查看rhbase调用了thrift,也因我们之前没有接触过thrift,也不知道如何调用,便只能百度。
结果是从这篇文章找到答案:Thrift介绍与应用(三)—hbase的thrift接口
原因就是之前thrift启动的是thrift2。故对此服务进行重启:

# hbase-1.x/bin/hbase-daemon.sh stop thrift2
# hbase-1.x/bin/hbase-daemon.sh start thrift
# jps

通过jps可查看thrift服务是否有启动。启动后,在R中重新输入代码,可以发现能正常运行。