1. 程式人生 > >HIVE數倉的安裝與使用

HIVE數倉的安裝與使用

hive的安裝與簡單入門

1 HIVE簡單介紹

1.1什麼是 Hive
Hive:由 Facebook 開源用於解決海量結構化日誌的資料統計。
Hive 是基於 Hadoop 的一個數據倉庫工具,可以將結構化的資料檔案對映為一張表,並提供類 SQL 查詢功能。
本質是:將HQL 轉化成 MapReduce 程式
1.2Hive 架構原理
hive架構
1.3Hive 在載入資料的過程中不會對資料進行任何處理,甚至不會對資料進行掃描,因此也沒有對資料中的某些 Key 建立索引。

2 HIVE安裝

2.1 下載地址
http://archive.apache.org/dist/hive/
github:

https://github.com/apache/hive
2.2 hive 安裝部署

[[email protected] ~]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C ~/install

[[email protected] ~]$ cd install

[[email protected] install]$ mv apache-hive-1.2.1-bin.tar.gz hive

[[email protected] install]$ cd hive/conf

[[email protected]
conf]$ mv hive-env.sh.template hive-env.sh

配置hive-env.sh 檔案

  • (a)配置 HADOOP_HOME 路徑
    export HADOOP_HOME=/home/hadoop/install/hadoop-2.7.2
  • (b)配置HIVE_CONF_DIR 路徑
    exportHIVE_CONF_DIR=/home/hadoop/install/hive/conf

3.啟動HIVE

3.1啟動hadoop

[[email protected] ~]$ start-dfs.sh

[[email protected]
~]$ start-yarn.sh

3.2在hdfs上新建/tmp目錄和/user/hive/warehouse

[[email protected] ~]$ hdfs dfs -mkdir /tmp

[[email protected] ~]$ hdfs dfs -mkdir -p /user/hive/warehouse

3.3啟動hive

[[email protected] ~]$ /home/hadoop/hive/bin/hive

4.HIVE基本操作

  • 檢視資料庫
hive > show database;
  • 使用預設資料庫
hive > use default;
  • 建立表
hive > create table student(id int, name string) ;
  • 查看錶的結構
hive > desc student;
  • 向表中插入資料
hive > insert into student values(1000,"ss");

HQL語句是類SQL語句

5.HIVE的基本資料型別

Hive資料型別 Java資料型別 長度 例子
TINYINT byte 1byte 有符號整數 20
SMALINT short 2byte 有符號整數 20
INT int 4byte 有符號整數 20
BIGINT long 8byte 有符號整數 20
BOOLEAN boolean 布林型別,true 或者false TRUE FALSE
FLOAT float 單精度浮點數 3.14159
DOUBLE double 雙精度浮點數 3.14159
STRING string 字元系列。可以指定字符集。可以使用單引號或者雙引號 ‘now is the time’ “for all good men”
TIMESTAMP 時間型別
BINARY 位元組陣列

對於Hive 的 String 型別相當於資料庫的 varchar 型別,該型別是一個可變的字串, 不過它不能宣告其中最多能儲存多少個字元,理論上它可以儲存 2GB 的字元數。

5.2集合型別

資料型別 描述 語法示例
STRUCT 和 c 語言中的 struct 類似,都可以通過“點” 符號訪問元素內容。例如,如果某個列的資料型別是 STRUCT{first STRING, lastSTRING}, 那麼第 1 個元素可以通過欄位.first 來引用。 struct()
MAP MAP 是一組鍵-值對元組集合,使用陣列表示法可以訪問資料。例如,如果某個列的資料型別是 MAP ,其中鍵-> 值對是’first’->’John’和’last’->’Doe’,那麼可以通過欄位名[‘last’]獲取最後一個元素 map()
ARRAY 陣列是一組具有相同型別和名稱的變數的集合。這些變數稱為陣列的元素,每個陣列元素都有一個編號,編號從零開始。例如,陣列值為[‘John’, ‘Doe’],那麼第 2 個元素可以通過陣列名[1]進行引用 Array()

基於上述資料結構,我們在 Hive 裡建立對應的表,並匯入資料
建立本地檔案test.txt

songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing

yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing

Hive 上建立測試表 test

hive> create table test( name string,
    > friends array<string>, children map<string, int>,
    > address struct<street:string, city:string>)
    > row format delimited fields terminated by ',' collection items terminated by '_'
    > map keys terminated by ':'
    > lines terminated by '\n';
OK
Time taken: 35.772 seconds
hive> 

讀取資料到表中

hive> load data local inpath '/home/hadoop/test/test.txt' into table test;

訪問三種集合列裡的資料,以下分別是 ARRAY,MAP,STRUCT 的訪問方式

hive> select friends[1],children['xiao song'],address.city 
    > from test where name="songsong";
OK
lili	18	beijing
Time taken: 4.662 seconds, Fetched: 1 row(s)