Hive入門
介紹
Hive 是一個基於 Hadoop 的資料倉儲工具,它可以將結構化資料檔案對映成一張表,然後通過類似 SQL 的查詢語句來執行查詢。這些查詢語句在Hive中被稱作HQL,這些 HQL 會被翻譯成 MapReduce 作業來執行。
Hive 把表和欄位轉換成 HDFS 中的資料夾和檔案,並將這些後設資料保持在關係型資料庫中,如 derby 或 mysql。
Hive 查詢的資料儲存在HDFS上,執行在Yarn上。
Hive 適合做離線資料分析,如:批量處理和延時要求不高場景。
安裝
安裝 Hadoop
由於 Hive 是基於 Hadoop 的,所以需要先準備一個 Hadoop 環境。Hadoop 的安裝參考我前面的文章。
安裝 Hive
首先從下面地址下載最新版本的 Hive,這裡我們使用 2.3.2 版。
下載並解壓安裝包
$ wget -c https://dist.apache.org/repos/dist/release/hive/hive-2.3.2/apache-hive-2.3.2-bin.tar.gz
$ tar zxvf apache-hive-2.3.2-bin.tar.gz
$ cd apache-hive-2.3.2-bin
設定環境變數
$ export JAVA_HOME=/opt/jdk8
$ export HADOOP_HOME=/apps/hadoop-3.0.0
$ export HIVE_HOME=/apps/apache-hive-2.3.2-bin
初始化 Derby 資料庫,Hive 預設使用 Derby 資料庫來儲存後設資料。生產環境建議使用 Mysql。
$ bin/schematool -dbType derby -initSchema
執行 Hive
啟動 Shell
通常我們使用 Hive 都是使用命令列工具來執行一些資料的更新和查詢,下面命令就會啟動 Hive 的命令列終端。
$ bin/hive
> hive
檢視錶
hive> show tables;
建立表
hive> CREATE TABLE users(id int, username string, password string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
插入查詢資料
這裡我們先準備一個資料檔案 users.dat,內容如下:
1,user1,password1
2,user2,password2
3,user3,password3
4,user4,password4
5,user5,password5
向資料表匯入資料
# 從本地檔案系統匯入
hive> LOAD DATA LOCAL INPATH '/tmp/users.dat' INTO TABLE users;
# 從 HDFS 匯入
hive> LOAD DATA INPATH '/tmp/users.dat' INTO TABLE users;
匯入資料後,使用 HQL 來查詢結果
hive> select * from users;
OK
1 user1 password1
2 user2 password2
3 user3 password3
4 user4 password4
5 user5 password5
此時,我們檢視一下這些資料在 HDFS 上是怎樣儲存的,我在檢視
hive> dfs -ls /user/hive/warehouse/users
Found 1 items
-rwxr-xr-x 2 jhadmin supergroup 54 2018-02-05 00:14 /user/hive/warehouse/users/users.dat
hive> dfs -cat /user/hive/warehouse/users/users.dat
1,user1,password1
2,user2,password2
3,user3,password3
4,user4,password4
5,user5,password5
下面我們再插入一條記錄看看,此時終端會出現MapReduce作業的相關資訊。
hive> INSERT INTO TABLE users(id, username, password) values (6, 'user6', 'password6');
... (MapReduce Job output)
hive> select * from users;
OK
6 user6 password6
1 user1 password1
2 user2 password2
3 user3 password3
4 user4 password4
5 user5 password5
檢視一下 HDFS 的檔案資訊,可以看到新新增了一個檔案000000_0,其中儲存著上面插入語句儲存的資料。
hive> dfs -ls /user/hive/warehouse/users
Found 2 items
-rwxr-xr-x 2 jhadmin supergroup 22 2018-02-05 00:26 /user/hive/warehouse/users/000000_0
-rwxr-xr-x 2 jhadmin supergroup 54 2018-02-05 00:14 /user/hive/warehouse/users/users.dat
hive> dfs -cat /user/hive/warehouse/users/000000_0
6,username6,password6
從上面的結果可以看到,每次單獨的 INSERT 語句都會至少產生一個檔案,因此在生產環境下還是要避免這樣的插入操作,而應該使用批量匯入來寫入資料。
上面的查詢語句 “select * from users;” 太簡單,以至於看不出他是不是使用的 MapReduce 作業來執行查詢的,下面我們把查詢語句稍微修改一下,就可以看出 Hive 會把 HQL 轉換成 MapReduce 作業來執行了。
hive> select * from users order by id;
... (MapReduce Job output)
OK
1 user1 password1
2 user2 password2
3 user3 password3
4 user4 password4
5 user5 password5
6 user6 password6
相關文章
- Hive 入門Hive
- hive從入門到放棄(一)——初識hiveHive
- Hive入門學習隨筆(二)Hive
- hadoop hive hbase 入門學習 (三)HadoopHive
- 從入門到放棄之大資料Hive大資料Hive
- hive從入門到放棄(三)——DML資料操作Hive
- hive從入門到放棄(二)——DDL資料定義Hive
- HDFS+MapReduce+Hive+HBase十分鐘快速入門Hive
- hive從入門到放棄(四)——分割槽與分桶Hive
- hive從入門到放棄(六)——常用檔案儲存格式Hive
- Hive學習筆記 4 Hive的資料匯入Hive筆記
- spark寫入hive資料SparkHive
- HIVE資料匯入基礎Hive
- 將資料匯入kudu表(建立臨時hive表,從hive匯入kudu)步驟Hive
- 入門入門入門 MySQL命名行MySql
- HIVE隨手記——Hive命令(?$HIVE_HOME/bin/hive)Hive
- 如何入CTF的“門”?——所謂入門就是入門
- 何入CTF的“門”?——所謂入門就是入門
- 雲端計算大資料學習路線課程大綱資料:hive入門操作大資料Hive
- scala 從入門到入門+
- makefile從入門到入門
- ACM入門之新手入門ACM
- [Hive]Hive排序優化Hive排序優化
- Hive --------- hive 的優化Hive優化
- Hive之 hive架構Hive架構
- [hive] hive cli 命令列Hive命令列
- 【小入門】react極簡入門React
- gRPC(二)入門:Protobuf入門RPC
- 【Hive】hive資料遷移Hive
- Hive篇--搭建Hive叢集Hive
- Hive篇---Hive使用優化Hive優化
- 《Flutter 入門經典》之“Flutter 入門 ”Flutter
- 新手入門,webpack入門詳細教程Web
- Android入門教程 | RecyclerView使用入門AndroidView
- linux新手入門――shell入門(轉)Linux
- Sqoop將MySQL資料匯入到hive中OOPMySqlHive
- hive資料倉儲匯入資料的方法Hive
- Hive學習之六 《Hive進階— —hive jdbc》 詳解HiveJDBC