楼主: xinguanxk
3698 2

[问答] RHive的配置 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

23%

还不是VIP/贵宾

-

威望
0
论坛币
23 个
通用积分
0.0023
学术水平
5 点
热心指数
6 点
信用等级
5 点
经验
7229 点
帖子
89
精华
0
在线时间
203 小时
注册时间
2014-1-27
最后登录
2021-12-8

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位好,请问这里有搞hadoop,hive的高手吗?有没有尝试准确配置过rhive之类的?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Hive HIV Hadoop 各位好 有没有

哎,到现在还没有着落 ...
沙发
DM小菜鸟 发表于 2015-3-24 16:46:13 |只看作者 |坛友微信交流群
环境配置

(配置部分只记录一些细节)


RHive 依赖于Rserve,因此在安装R的时候有些变化:


./configure --disable-nls --enable-R-shlib
make
make install
enable-R-shlib 是将R作为动态库进行安装,这样像Rserve依赖于R动态库的包就可以安装了,但缺点是会有20%左右的性能下降。


Rserve的安装


正常的安装R包:


install.packages('rJava')
install.packages('Rserve')
在安装Rsever用户下,创建一目录,并创建Rserv.conf文件,写入``remote enable''保存并退出。


通过scp -r 命令将Master节点上安装好的Rserve包,以及Rserv.conf文件拷贝到所有slave节点下,


scp -r /data2/soft/R2.15/library/Rserve slave1:/data2/soft/R2.15/library/
scp -r /data2/soft/R2.15/library/Rserve slave2:/data2/soft/R2.15/library/
scp -r /data2/soft/R2.15/library/Rserve slave3:/data2/soft/R2.15/library/
scp -r /data2/soft/Rserv.conf slave1:/data2/soft/
scp -r /data2/soft/Rserv.conf slave2:/data2/soft/
scp -r /data2/soft/Rserv.conf slave3:/data2/soft/
在所有节点启动Rserve


Rserve--RS-conf /data2/soft/Rserv.conf
telnet slave1 6311
在Master节点telnet所有slave节点,显示 Rsrv0103QAP1 则表示连接成功


RHive的安装


安装包,并在master节点和所有slave节点创建目录,并授读写权限


R CMD INSTALL RHive_0.0-7.tar.gz
cd /data2/soft/
mkdir -p rhive/data
在master节点和所有slave节点的hadoop用户下配置环境变量


vi .bash_profile
export RHIVE_DATA=/data2/soft/R/rhive/data
通过scp -r 命令将Master节点上安装好的RHive包拷贝到所有slave节点下,


scp -r /data2/soft/R2.15/library/RHive slave1:/data2/soft/R2.15/library/
scp -r /data2/soft/R2.15/library/RHive slave2:/data2/soft/R2.15/library/
scp -r /data2/soft/R2.15/library/RHive slave3:/data2/soft/R2.15/library/
查看hdfs文件系统下的jar包是否有读写权限


hadoop fs -ls /rhive/lib
最后,启动hive远程服务: rhive是通过thrift连接hiveserver的,需要要启动后台thrift服务,即:在hive客户端启动hive远程服务


nohup hive --service hiveserver &
完毕。


RHive的使用
rhive-api


从HIVE中获得表信息的函数,比如


rhive.list.tables:获得表名列表,支持pattern参数(正则表达式),类似于HIVE的show table
rhive.desc.table:表的描述,HIVE中的desc table
rhive.exist.table:

RHive 简单应用


载入Rhive包,并连接HIVE,获取数据:


library(RHive)
rhive.connect(host ='host_ip')
d <- rhive.query('select * from emp limit 1000')
class(d)
m <- rhive.block.sample(data_sku, percent =0.0001, seed =0)
rhive.close()
一般在系统中已经配置了host,因此可以直接rhive.connect()进行连接,记得最后要有rhive.close()操作。 通过HIVE查询语句,将HIVE中的目标数据加载至R环境下,返回的 d 是一个dataframe。


实际上,rhive.query的实际用途有很多,一般HIVE操作都可以使用,比如变更scheme等操作:


rhive.query('use scheme1')
rhive.query('show tables')
rhive.query('drop table emp')
但需要注意的是,数据量较大的情况需要使用rhive.big.query,并设置memlimit参数。


将R中的对象通过构建表的方式存储到HIVE中需要使用


rhive.write.table(dat, tablename ='usertable', sep =',')
而后使用join等HIVE语句获得相关建模数据。其实写到这儿,有需求的看官就应该明白了,这几项 RHive 的功能就足够 折腾些有趣的事情了。


注1:其他关于在HIVE中调用R函数,暂时还没有应用,未来更新。
注2:rhive.block.sample这个函数需要在HIVE 0.8版本以上才能执行。

参考:RHive 的 github 项目


已有 1 人评分经验 论坛币 收起 理由
李会超 + 60 + 10 热心帮助其他会员

总评分: 经验 + 60  论坛币 + 10   查看全部评分

使用道具

藤椅
xinguanxk 发表于 2015-12-27 18:28:51 |只看作者 |坛友微信交流群
DM小菜鸟 发表于 2015-3-24 16:46
环境配置

(配置部分只记录一些细节)
这个配置我看过,可惜我现在已经不在原来的公司做了,谢谢你。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 02:45