1. 程式人生 > >(防坑筆記)hadoop3.0 (五) Hive的入門與資料型別

(防坑筆記)hadoop3.0 (五) Hive的入門與資料型別

簡單提提:

Hive是一個倉儲結構的工具,能對hadoop中的檔案以類 sql的方式查詢出來,也可以讓熟悉mapper/reduce的開發者進行自定義操作,單總歸而言,它只是一個解析引擎,將HiveQL語句解析成job任務讓hadoop執行操作;

HDFS的目錄/檔案,按表名把資料夾分開。如果是分割槽表,則分割槽值是子資料夾,可以直接在M/R Job裡使用這些資料

     特別注意:包含 * 的查詢,比如 select * from tbl 不會生成 MapRedcue 任務

資料型別

l 基本資料型別

    tinyint/smallint/int/bigint

    float/double

    boolean

    string

ll  複雜資料型別

    Array/Map/Struct

注意:沒有date/datetime型別


metastore:(hive元資料的集中存放地)(一般不用預設的,而採用mysql,故這裡不多提)

Hive  metastore:

①metastore預設使用內嵌的derby資料庫作為儲存引擎

②Derby引擎的缺點:一次只能開啟一個會話


Mysql metastore:

使用Mysql作為外接儲存引擎,多使用者同時訪問。



外接引擎安裝準備:

   前提: 在有hdfs部署的機上實踐 Mysql的安裝可以參考: https://www.cnblogs.com/bookwed/p/5896619.html

將mysql加入開機啟動

# chkconfig mysqld on

 

允許遠端登入mysql

首先登入mysql資料,然後執行下面兩行語句:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'itcast' WITH GRANT OPTION;
flush privileges;

metastore 的安裝準備:

在usr 目錄下建立了 hive ,進入,執行
wget http://mirrors.shuosc.org/apache/hive/hive-2.3.2/apache-hive-2.3.2-bin.tar.gz

tar -zxvf apache-hive-2.3.2-bin.tar.gz
然後修改名字 成為hive

修改/etc/profile檔案,將hive加入環境變數

vim /etc/profile
export HIVE_HOME=/usr/hive/hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin

Source 一下,讓配置生效

source /etc/profile

上傳資料庫驅動mysql-connector-java-5.1.45.jar到/usr/hive/hive/lib

修改$HIVE_HOME/conf/hive-site.xml

將一下配置加入到hive-site.xml 檔案中開頭(標籤<value>中的內容自己定義,就是linux使用者名稱)

1、

<property>
     <name>system:java.io.tmpdir</name>
     <value>/home/apache-hive/tmpdir</value>
  </property>
  <property>
     <name>system:user.name</name>
     <value>root</value>
   </property>


2、 再次進入到hive目錄中的conf檔案中,配置hive-site.xml檔案,利用vi編輯器中的搜尋功能(Esc模式下輸入 / ),分別找到 javax.jdo.option.ConnectionURL, javax.jdo.option.ConnectionDriverName, javax.jdo.option.ConnectionUserName, javax.jdo.option.ConnectionPassword 這四項配置,其中這四項的<value>分別填: <value>jdbc:mysql://192.168.88.129:3306/hive?characterEncoding=utf8&amp;useSSL=false</value>, <value>com.mysql.jdbc.Driver</value>, <value>root</value>, <value>root</value>。(注:這裡的192.168.88.129是伺服器的地址) 3、

進入hive目錄的bin檔案中使用 ./schematool -dbType mysql -initSchema 進行元資料庫初始化

初始化完成後,使用./hive命令啟動hive,出現hive>的時候,就可以使用了。


配置途中可能遇到的異常:


問題一:connection refuse  重啟hadoop,包括格式化

問題二:啟動沒問題,當進去的時候無論執行什麼HiveQL語句都報如下錯誤

啟動debug方式

hive -hiveconf hive.root.logger=DEBUG,console




測試配置

啟動hive

# hive

建立資料庫

hive> create database test_db;

顯示所有資料庫

show databases;

使用資料庫test_db

hive> use test_db;

建立學生表

hive> create table student(id int,name string);

檢視是否在HDFS中存有下面資料夾

http://192.168.88.129:50070/explorer.html#/user/hive/warehouse/test_db.db/student