Hive-0.14.0與mysql配置

1.下載後解壓修改文件夾的用戶及用戶組權限

2.配置參數

/etc/profile(環境變量)

                 export PATH=${JAVA_HOME}/bin:$PATH:${HADOOP_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin

hive-env.sh

                 export HADOOP_HOME=/usr/local/hadoop

bin/hive-config.sh

                 export JAVA_HOME=/usr/lib/jdk

                 export HIVE_HOME=/usr/local/hive

                 export HADOOP_HOME=/usr/local/hadoop

hive-site.xml(由hive-default.xml.template複製生成)

<property>  --這四個參數一定要配置,否則報錯

                 <name>hive.exec.local.scratchdir</name>

                 <value>/usr/local/hive/temp</value>

</property>

<property>

                 <name>hive.downloaded.resources.dir</name>

                 <value>/usr/local/hive/temp</value>

</property>
<property>

                 <name>hive.querylog.location</name>

                 <value>/usr/local/hive/temp</value>

</property>

<property>

                 <name>hive.server2.logging.operation.log.location</name>

                 <value>/usr/local/hive/operation_logs</value>

</property>

<property> --該參數是設置HDFS中保存數據倉庫的目錄

                 <name>hive.metastore.warehouse.dir</name>

                 <value>/user/hive/warehouse</value>

</property>

 

hive-log4j.properties

                  hive.log.dir=/usr/local/hive/logs

                  hive.log.file=hive.log

                  log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter  --重要

3.配置完工,執行  hive 即可進入 hive shell,注意Hive是建立在Hadoop之上的,需啓動HDFS,在執行hive

 

5.連接mysql

   先看看mysql服務有沒有啓動,/etc/rc.d/init.d/mysql status

   我的系統安裝時就選擇了mysql軟件,不過默認是沒有啓動的,如果沒有安裝,可以yum install mysql-server安裝

   注意切換到root權限下才能執行 service mysqld start  ,啓動mysql

6.mysqladmin -u root password newpassword            --mysql安裝後root用戶默認沒有密碼,需設定一個密碼

    mysql -u root -p     --root 用戶登錄mysql,接下來提示輸入密碼,輸入剛纔設定的密碼即可,root成功登錄

    注意:如果你的主機地址不是localhost,而是配置了Hosts文件,有了自己的主機名,辣麼問題來了,請用下面的命令操作

    mysqladmin -u root -h CentOS password 'new-password'           --  -u 表示用戶名  -h 表示主機名

    mysql -u root -h CentOS -p  --     -p表示密碼

   

7.接下來創建其他用戶

    create   user    'user1'@'localhost'   identified   by   'password';

    grant   select , insert , update , delete   on   *.*   to  'user1'@'localhost'

    grant   all   on   *.*   to   'user1'@'localhost'              --這個是賦給用戶 user1  所有的權限,簡單暴力

    用上面第一句話和第三句就可以了

    注意:權限設置好後,記得執行

   flush privileges;            --刷新系統權限表

8.配置hive連接mysql

hive-site.xml

<property>

         <name>javax.jdo.option.ConnectionURL</name>

         <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>

         --這裏因爲我創建mysql帳號時用的是localhost,所以這裏是這個,如果你用的主機名,這裏填寫主機名,3306是mysql默認的監聽端口,其他照抄

</property>

<property>

         <name>javax.jdo.option.ConnectionDriverName</name>

         <value>com.mysql.jdbc.Driver</value>

</property>

<property>

         <name>javax.jdo.option.ConnectionUserName</name>

         <value>conan1</value>        --這是我自己在創建的mysql用戶

</property>

<property>

         <name>javax.jdo.option.ConnectionPassword</name>

         <value>123</value>

</property>

9.去網上下載一個mysql-connector-java-5.1.34-bin.jar,把它放入 ${HIVE_HOME}/lib 的目錄下,否則會報錯,這個是連接驅動

10.執行環境

命令行環境 :直接輸入  hive  即可進入命令行

hive 驗證啓動的方法:hive  --service hwi

                                         這時會報錯,馬丹真坑

FATAL hwi.HWIServer:HWI WAR file not found at /usr/local/hive/${env:HWI_WAR_FILE},小錯誤,

hive目前的發行包裏沒有hwi的war包文件,這個問題在0.13和0.14上都存在,沒有這個war包就不能啓動hwi服務。

目前的解決方法是從源碼手動build出這個war包,具體做法是:

下載hive 0.14.0的源碼包並解壓

解壓後進入hwi子目錄,該目錄下的web文件夾正是war包的全部文件,我們需要做的就是通過jar命令把這個文件夾打包爲war文件。

在hwi目錄下執行: jar cvfM0 hive-hwi-0.14.0.war -C web/ .

執行之後 ,將生成的war文件拷貝至$HIVE_HOME/lib文件夾下,同時修改hive-site.xml文件夾中的:  

hive.hwi.war.file,將其value改爲lib/hive-hwi-0.14.0.war 

<property>

                 <name>hive.hwi.war.file</name>

                 <value>lib/hive-hwi-0.14.0.war</value>

</property>

再執行  hive  --service hwi

妥妥滴完工,這時還會報錯,我母雞怎麼解決,不過還是可以運行了

顯示  Started [email protected]:9999

打開瀏覽器輸入   localhost:9999/hwi  成功打開頁面

 如果出現以下錯誤:

Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jdk/jre"

解決方法: 
cp $JAVA_HOME/lib/tools.jar $HIVE_HOME/lib/ 


11.Hive的數據類型

基本數據類型

tinyint/smallint/int/bigint

float/double

boolean

string

複雜數據類型

Array/Map/Struct

沒有date/datetime

 

12.Hive常規操作

hive > create  database  test ;                   --創建一個 test  數據庫

hive > use  test ;                                   --使用  test  數據庫

hive > create  table score(name  string , score  int);      --創建名叫 score  的表,兩個字段,name字段是string類型,score是int累i系那個

hive > create table person(name string,age int)row format delimited fields terminated by '\t' escaped by '\\' stored as textfile;

           --後面的這段話是指定字段的分隔符,這裏設置的是  '\t'  遇到一個這個符號  即表示一個字符串結束

   --COLLECTION ITEMS TERMINATED BY ','     這句話表示這個字段是一個數組,用  ',' 分割元素對象

hive > load  data  local  inpath  ' fileshare/score1.txt '  into  table  score;      --加載score1.txt文件中的數據到表 score 中

hive > select  *  from score;                   --查詢顯示錶中的數據

hive > select  count(*)  from score;         --這個計算過程,Hive會自動轉換成MapReduce任務執行,

hive > drop table score ;                        --刪除表

發佈了14 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章