zoukankan      html  css  js  c++  java
  • CentOS6.5安装RHive

    1、安装RServe软件包(各个节点都要安装)

    [root@Hadoop-NN-01 mysofts] # R CMD INSTALL Rserve_1.7-2.tar.gz

     

    2、设置环境变量

    [root@Hadoop-NN-01 ~]# vi /etc/profile
    export R_HOME= /usr/local/lib64/R
    export PATH=$PATH:$R_HOME/bin
    
    [root@Hadoop-NN-01 ~]# source /etc/profile  #保存生效

     

    3、创建Rserv.conf

    $R_HOME的目录下创建Rserv.conf文件,写入``remote enable''保存并退出。

    vi Rserv.conf
    ``remote enable''

    4、拷贝文件

    cp /root/mysofts/R-3.2.5/lib/* /usr/lib64/

     

    5、所有节点启动Rserve

    如果没有Rserve请先建立软链:

    ln -s /usr/local/lib64/R/bin/Rserve /usr/bin/Rserve

    启动:

    Rserve --RS-conf /usr/local/lib64/R/Rserv.conf

    验证:

    telnet Hadoop-NN-01 6311    #显示 Rsrv0103QAP1 则表示连接成功
    netstat -tunpl | grep 6311

    6、RHive包的安装(各个节点都要安装,因此Hive也要各节点都要安装)

    [root@Hadoop-NN-01 mysofts] # R CMD INSTALL RHive_2.0-0.2.tar.gz

    创建目录

    [root@Hadoop-NN-01 mysofts] # cd $R_HOME
    [root@Hadoop-NN-01 mysofts] # mkdir -p rhive/data
    [root@Hadoop-NN-01 mysofts] # chmod 777 -R rhive/data

    配置环境变量

    [root@Hadoop-NN-01 mysofts] # vi /etc/profile
    export RHIVE_DATA=/usr/local/lib64/R/rhive/data

    如果找不到hadoop命令,把下面加到~/.bashrc中

    # hadoop cdh5
    export HADOOP_HOME=/home/hadoopuser/hadoop-2.6.0-cdh5.6.0
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

    使用hadoopuser创建hdfs目录

    hadoop fs -mkdir /rhive
    hadoop fs -mkdir /rhive/lib
    hadoop fs -ls /rhive/lib

    把jar包拷贝到相应的目录

    hadoop fs -put /usr/local/lib64/R/library/RHive/java/rhive_udf.jar /rhive/lib

    7、启动

    hive客户端启(master、各slave均可)动hive远程服务(rhive是通过thrift连接hiveserver的,需要要启动后台thrift服务):

    nohup hive --service hiveserver2 &   #注意这里是hiveserver2

    8、RHive测试

    1)rhive-api

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

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

        rhive.desc.table(TableName):表的描述,相当于HIVE中的desc table。

        rhive.exist.table(TableName):表是否存在

    2)测试

    > rhive.env()

    3)简单应用

    #R
    >library(RHive)
    >rhive.connect(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 的功能就足够 折腾些有趣的事情了。

     

    可能出现的问题:

    Exception in thread "main" java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://192.168.206.128:10000/default: java.net.ConnectException: Connection refused: connect

    解决方法:

    1. 检查hive server2是否启动:

    netstat -anp | grep 10000

    2. 检查conf/hive-site.xml 下的配置是否正确:

        <configuration>
          <property>
           <name>hive.server2.thrift.port</name>
          <value>10000</value>
        </property>
        <property>
           <name>hive.server2.thrift.bind.host</name>
           <value>192.168.206.128</value>
         </property>
        </configuration>
  • 相关阅读:
    苹果所有常用证书,appID,Provisioning Profiles配置说明及制作图文教程(精)
    使用tcpdump抓取HTTP包
    android保持在休眠时,后台程序继续运行(让程序获取设备电源锁)
    insert数据时,获取插入数据的id
    Android学习笔记(五五):通知Notification(下)
    apk反编译与android项目代码混淆
    android 解决横竖屏切换时重新载入的问题
    android中往字符串数组动态添加元素
    error 25015安装程序集“C:WindowsMicrosoft .NETFrameworkv2.0.50727xxx.dll”失败,原因是出现了系统错误:另一个程序正在使用此文件,进程无法访问
    win7 安装vs2013后无法连接远程数据库,出现如下提示的解决方法
  • 原文地址:https://www.cnblogs.com/hunttown/p/5470805.html
Copyright © 2011-2022 走看看