hadoop安裝hive及java調用hive

   一、安裝hivehtml

    在安裝hive前,請確保已經安裝好了hadoop,如未安裝,請參考centoos 安裝hadoop集羣進行安裝;java

    1.一、下載,解壓mysql

      下載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中sql

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

       進入到/usr/local目錄下,將解壓後的文件重命名爲hive
        mv apache-hive-2.1.1-bin/ hive apache

    1.二、設置hive環境變量vim

      vi ~/.bashrcapi

      在文件尾部添加bash

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

      讓配置生效

        source ~/.bashrc

  二、安裝mysql

     安裝mysql可參考

     yum 安裝mysql數據庫

  三、下載mysql驅動包

    下載MySQL驅動,本機使用的版本是mysql-connector-java-5.1.35.jar;

     拷貝包到hive/lib中

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

  四、修改hive配置

    3.一、修改日誌配置

      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.二、修改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的主機名;

  五、啓動hive 

     啓動hive以前,請確保hadoop和mysql已經啓動

     執行schematool命令進行初始化

      schematool -dbType mysql -initSchema 

     初始化完成後執行hive命令便可進入hive的命令行界面

      

    若是出現以下錯誤

      

    則須要在mysql中經過grant對鏈接進行受權;

  六、使用java api調用hive

    6.一、修改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.二、啓動HiveServer2服務

        hive --service metastore & 

    6.三、啓動hiveserver2服務    

        hive --service hiveserver2 &

      經過下述命令查看hiveserver2是否已經開啓

        netstat -nl |grep 10000

      如出現錯誤請查看hive/logs;

    6.四、編寫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經常使用操做

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

     二、導入數據 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中新建一個目錄,目錄名稱與表名相同

       -- 對該目錄中文件的增刪改就是對錶的增刪改;

     三、查看錶和數據
       show tables  --查看庫中全部的表
       show tables '*t*'  -- 經過正則表達式查找庫中的表
       select * from t_hive  -- 查看t_hive表中的數據
       desc t_hive;    -- 查看t_hive的表結構

     四、修改         ALTER TABLE t_hive ADD COLUMNS (new_col String); --增長new_col字段         ALTER TABLE t_hive RENAME TO t_hadoop; -- 修改t_hive表名爲t_hadoop     五、刪除         DROP TABLE t_hive; -- 刪除         truncate TABLE t_hive -- 刪除t_hive表中的全部數據

相關文章
相關標籤/搜索