HIVE數倉的安裝與使用
阿新 • • 發佈:2018-12-24
hive的安裝與簡單入門
1 HIVE簡單介紹
1.1什麼是 Hive
Hive:由 Facebook 開源用於解決海量結構化日誌的資料統計。
Hive 是基於 Hadoop 的一個數據倉庫工具,可以將結構化的資料檔案對映為一張表,並提供類 SQL 查詢功能。
本質是:將HQL 轉化成 MapReduce 程式
1.2Hive 架構原理
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
- (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)