RHive 是一种通过HIVE高性能查询来扩展R计算能力的包。它可以在R环境中非常容易的调用HQL, 也允许在Hive中使用R的对象和函数。理论上数据处理量可以无限扩展的Hive平台,搭配上数据挖掘的利器R环境, 堪称是一个完美的大数据分析挖掘的工作环境。
(配置部分是同事搞定的,只记录一些细节)
RHive 依赖于Rserve,因此在安装R的时候有些变化:
enable-R-shlib 是将R作为动态库进行安装,这样像Rserve依赖于R动态库的包就可以安装了,但缺点是会有20%左右的性能下降。
正常的安装R包:
在安装Rsever用户下,创建一目录,并创建Rserv.conf文件,写入``remote enable''保存并退出。
通过scp -r 命令将Master节点上安装好的Rserve包,以及Rserv.conf文件拷贝到所有slave节点下,
在所有节点启动Rserve
在Master节点telnet所有slave节点,显示 Rsrv0103QAP1 则表示连接成功
安装包,并在master节点和所有slave节点创建目录,并授读写权限
在master节点和所有slave节点的hadoop用户下配置环境变量
通过scp -r 命令将Master节点上安装好的RHive包拷贝到所有slave节点下,
查看hdfs文件系统下的jar包是否有读写权限
最后,启动hive远程服务: rhive是通过thrift连接hiveserver的,需要要启动后台thrift服务,即:在hive客户端启动hive远程服务
完毕。
从HIVE中获得表信息的函数,比如
载入Rhive包,并连接HIVE,获取数据:
一般在系统中已经配置了host,因此可以直接rhive.connect()进行连接,记得最后要有rhive.close()操作。 通过HIVE查询语句,将HIVE中的目标数据加载至R环境下,返回的 d 是一个dataframe。
实际上,rhive.query的实际用途有很多,一般HIVE操作都可以使用,比如变更scheme等操作:
但需要注意的是,数据量较大的情况需要使用rhive.big.query,并设置memlimit参数。
将R中的对象通过构建表的方式存储到HIVE中需要使用
而后使用join等HIVE语句获得相关建模数据。其实写到这儿,有需求的看官就应该明白了,这几项 RHive 的功能就足够 折腾些有趣的事情了。
注2:rhive.block.sample这个函数需要在HIVE 0.8版本以上才能执行。
参考:RHive 的 github 项目
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
complicated 发表于 2014-5-18 14:50 问下lz,有实践过吗?我们想搞,看了这篇内容几次,但是有点不明白,想请教一下