Hive概述 內部表 外部表 分割槽表的操作

2021-08-31 09:41:45 字數 2832 閱讀 8021

一、hive概述

hive是基於hadoop的乙個資料倉儲工具。可以將結構化的資料檔案對映為一張資料庫表,並提供完整的sql查詢功能,可以將sql語句轉換為mapreduce任務進行執行。

hive是建立在 hadoop 上的資料倉儲基礎構架。它提供了一系列的工具,可以用來進行資料提取、轉化、載入(etl extract-transform-load ),這是一種可以儲存、查詢和分析儲存在hadoop 中的大規模資料的機制。

二、hive的hql

hql - hive通過類sql的語法,來進行分布式的計算。hql用起來和sql非常的類似,hive在執行的過程中會將hql轉換為mapreduce去執行,所以hive其實是基於hadoop的一種分布式計算框架,底層仍然是mapreduce,所以它本質上還是一種離線大資料分析工具。

三、資料庫和資料倉儲的區別

hive 構建在基於靜態批處理的hadoop 之上,hadoop 通常都有較高的延遲並且在作業提交和排程的時候需要大量的開銷。因此,hive 並不能夠在大規模資料集上實現低延遲快速的查詢。hive 並非為聯機事務處理而設計,hive 並不提供實時的查詢和基於行級的資料更新操作。hive 的最佳使用場合是大資料集的批處理作業,例如,網路日誌分析。

六、hive基礎指令

六、建立外部表

建立外部表的命令:create external table stu (id int,name string) row format delimited fields terminated by 』 』 location 『/data』

hive無論是內部表或外部表,當向hdfs對應的目錄節點下追加檔案時(只要格式符合),hive都可以把資料管理進來。

七、內部表和外部表的區別

通過hive執行:drop table stu 。這是刪除表操作。如果stu是乙個內部表,則hdfs對應的目錄節點會被刪除。

如果stu是乙個外部表,hdfs對應的目錄節點不會刪除。

八、hive分割槽表

hive也支援分割槽表,對資料進行分割槽可以提高查詢時的效率。

普通表和分割槽表區別:有大量資料增加的需要建分割槽表

執行:create table book (id int, name string) partitioned by (category string )row format delimited fields terminated by 』 ';

注:在建立分割槽表時,partitioned欄位可以不在字段列表中。生成的表中自動就會具有該欄位。

category 是自定義的字段。

分割槽表載入資料

load data local inpath 『./book_china.txt』 overwrite into table book partition (category=『cn』);

load data local inpath 『./book_english.txt』 overwrite into table book partition (category=『en』);

經檢查發現分割槽也是乙個目錄。

select * from book; 查詢book目錄下的所有資料

select * from book where category=『cn』; 只查詢 cn分割槽的資料

如果想先在hdfs的目錄下,自己建立乙個分割槽目錄,然後在此目錄下上傳檔案,此時手動建立目錄是無法被hive使用的,因為元資料庫中沒有記錄該分割槽。

如果需要將自己建立的分割槽也能被識別,需要執行:alter table book add partition (category = 『jp』) location 『/user/hive/warehouse/park.db/book/category=jp』;

這行命令的作用是在元資料dock表裡建立對應的元資料資訊

九、分割槽命令

顯示分割槽 show partitions book;

新增分割槽 alter table book add partition (category=『jp』)location

『/user/hive/warehouse/park.db/book/category=jp』; 或者:

msck repair table book;

刪除分割槽 alter table book drop partition(category=『cn』)

修改分割槽 alter table book partition(category=『french』) rename to partition (category=『hh』);

內部表,外部表,分割槽表

1.未被external修飾的是內部表 managed table 被external修飾的為外部表 external table 2.內部表資料由hive自身管理,外部表資料由hdfs管理。3.內部表資料儲存在hive.metastore.warehouse.dir 預設 user hive wa...

Hive 內部表 外部表 分割槽表 擴充套件命令

create external table if not exists 表名 列名資料型別 comment 本列注釋 comment 表注釋 partitioned by 列名資料型別 comment 本列注釋 clustered by 列名,列名,sorted by 列名 asc desc inf...

Hive內部表,外部表,分割槽表的建立

建立內部表 預設儲存在 user hive warehouse下 也可以通過location指定 刪除表時,會刪除表資料及元資料 create table if not exists db study.student id string name string row format delimite...