• hadoop安装hive及java调用hive


       1、安装hive

        在安装hive前,请确保已经安装好了hadoop,如未安装,请参考centoos 安装hadoop集群进行安装;

        1.1、下载,解压

          下载hive2.1.1:http://mirror.bit.edu.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz

           将下载好的hive包解压到/usr/local中

            tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local/ 

           进入到/usr/local目录下,将解压后的文件重命名为hive
            mv apache-hive-2.1.1-bin/ hive 

        1.2、设置hive环境变量

          vi ~/.bashrc

          在文件尾部添加

            export HIVE_HOME=/usr/local/hive
            export PATH=$PATH:$HIVE_HOME/bin

          让配置生效

            source ~/.bashrc

      2、安装mysql

         安装mysql可参考

         yum 安装mysql数据库

      3、下载mysql驱动包

        下载MySQL驱动,本机使用的版本是mysql-connector-java-5.1.35.jar;

         拷贝包到hive/lib中

          cp mysql-connector-java-5.1.35.jar /usr/local/hive/lib

      4、修改hive配置

        3.1、修改日志配置

          cp hive/conf/hive-log4j2.properties.template hive-log4j2.properties

          vim hive/conf/hive-log4j2.properties

          修改

            property.hive.log.dir = /usr/local/hive-2.1.1/logs/

        3.2、修改hive-site.xml

          cp hive/conf/hive-default.xml.template hive/conf/hive-site.xml

          vim  hive/conf/hive-site.xml

          删除里面的所有内容(未添加的会使用hive-default.xml.template中的默认配置),添加如下配置

    <configuration>
      <
    property>    <name>javax.jdo.option.ConnectionURL</name>    <value>jdbc:mysql://H30:3306/hive?createDatabaseIfNotExist=true</value>   </property>   <property>    <name>javax.jdo.option.ConnectionDriverName</name>    <value>com.mysql.jdbc.Driver</value>   </property>   <property>    <name>javax.jdo.option.ConnectionUserName</name>    <value>root</value>   </property>   <property>    <name>javax.jdo.option.ConnectionPassword</name>    <value>root</value>   </property>
    </configuration>

          其中H30为安装hive的主机名;

      5、启动hive 

         启动hive之前,请确保hadoop和mysql已经启动

         执行schematool命令进行初始化

          schematool -dbType mysql -initSchema 

         初始化完成后执行hive命令即可进入hive的命令行界面

          

        如果出现如下错误

          

        则需要在mysql中通过grant对连接进行授权;

      6、使用java api调用hive

        6.1、修改hive-site.xml配置

          在hive/conf/hive-site.xml的 <configuration></configuration>中添加如下配置

    <property>
      <name>hive.server2.thrift.bind.host</name>
      <value>192.168.3.238</value>                           
      <description>Bind host on which to run the HiveServer2 Thrift interface.
      Can be overridden by setting $HIVE_SERVER2_THRIFT_BIND_HOST</description>
    </property>
    <property>
      <name>hive.server2.long.polling.timeout</name>
      <value>5000</value>                                 
      <description>Time in milliseconds that HiveServer2 will wait, before responding to asynchronous calls that use long polling</description>
    </property>

           6.2、启动HiveServer2服务

            hive --service metastore & 

        6.3、启动hiveserver2服务    

            hive --service hiveserver2 &

          通过下述命令查看hiveserver2是否已经开启

            netstat -nl |grep 10000

          如出现错误请查看hive/logs;

        6.4、编写java API

          首先列出本程序依赖的Jar包:

            hadoop-2.2.0/share/hadoop/common/hadoop-common-2.7.1.jar
            $HIVE_HOME/lib/hive-exec-0.11.0.jar 
            $HIVE_HOME/lib/hive-jdbc-0.11.0.jar 
            $HIVE_HOME/lib/hive-metastore-0.11.0.jar 
            $HIVE_HOME/lib/hive-service-0.11.0.jar 
            $HIVE_HOME/lib/libfb303-0.9.0.jar 
            $HIVE_HOME/lib/commons-logging-1.0.4.jar 
            $HIVE_HOME/lib/slf4j-api-1.6.1.jar 

           项目代码可在下载http://url.cn/4EvRdbw下载

           如果项目运行出现错误

       java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): 
    User root is not allowed to impersonate anonymous  

          则可在hadoop的master服务器core-site.xml 配置中添加

    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>

          其中root表示项目中连接hive的mysql数据库用户名

       

      hive常用操作

         1、新建表 t_hive, "," 作为列分隔符
           CREATE TABLE t_hive (a int, b int, c int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

         2、导入数据 t_hive.txt
           LOAD DATA LOCAL INPATH '/home/cos/demo/t_hive.txt' OVERWRITE INTO TABLE t_hive ;

           hdfs dfs -put /opt/t_hive /user/hive/warehouse/t_hive 

           -- 上面两个命令效果一样,创建一个表其实就是在hdfs中新建一个目录,目录名称与表名相同

           -- 对该目录中文件的增删改就是对表的增删改;

         3、查看表和数据
           show tables  --查看库中所有的表
           show tables '*t*'  -- 通过正则表达式查找库中的表
           select * from t_hive  -- 查看t_hive表中的数据
           desc t_hive;    -- 查看t_hive的表结构

         4、修改
            ALTER TABLE t_hive ADD COLUMNS (new_col String); --增加new_col字段
            ALTER TABLE t_hive RENAME TO t_hadoop; -- 修改t_hive表名为t_hadoop
         5、删除
            DROP TABLE t_hive; -- 删除
            truncate TABLE t_hive -- 删除t_hive表中的所有数据


  • 相关阅读:
    linux内核模块的程序结构
    Vmware中RedHat命令行和图形界面切换
    Linux2.6内核启动流程学习
    关于mini2440u_boot的制作及烧录
    linux指令
    Arm-linux-gcc-4.3.2安装步骤
    JNDI 与 LDAP
    apicloud 自定义模块引用aar
    CSS canvas 捕捉视频video元素截图
    本地服务器搭建服务:ftp
  • 原文地址:https://www.cnblogs.com/luobiao320/p/7382895.html
Copyright © 2020-2023  润新知