Hive架構 資料庫和表 ?

2022-11-27 10:27:35 字數 1307 閱讀 1978

1.hive在hdfs上的預設儲存路徑

hive的資料都是儲存在hdfs上的,預設有一個根目錄,在hive-site.xml中,由引數hive.metastore.warehouse.dir指定。預設值為/user/hive/warehouse.

2. hive中的資料庫(database)

進入hive命令列,執行show databases;命令,可以列出hive中的所有資料庫,預設有一個default資料庫,進入hive-cli之後,即到default資料庫下。

使用use databasename;可以切換到某個資料庫下,同mysql;

hive中的資料庫在hdfs上的儲存路徑為$/databasename.db

比如,名為lxw1234的資料庫儲存路徑為:

/user/hive/warehouse/lxw1234.db

2.1 建立hive資料庫

使用hdfs超級使用者,進入hive-cli,語法為:

create (database|schema) [if not exists] database_name

[comment database_comment]

[location hdfs_path]

[with dbproperties (property_name=property_value, ...)];

比如,建立名為lxw1234的資料庫:

create database if not exists lxw1234

comment 'lxw的大資料田地-lxw1234.com'

localtion 'hdfs://namenode/user/lxw1234/lxw1234.db/';

建立時候可以指定資料庫在hdfs上的儲存位置。

注意:使用hdfs超級使用者建立資料庫後,該資料庫在hdfs上的儲存路徑的屬主為超級使用者,如果該資料庫是為某個或者某些使用者使用的,則需要修改路徑屬主,或者在hive中進行授權。

2.2 修改資料庫

修改資料庫屬性:

alter (database|schema) database_name

set dbproperties (property_name=property_value, …);

修改資料庫屬主:

alter (database|schema) database_name

set owner [user|role] user_or_role;

2.3 刪除資料庫

drop (database|schema) [if exists] database_name

[restrict|cascade];

Hive 分割槽表和分桶表

一 分割槽表 1.1概念 hive 中的表對應為 hdfs 上的指定目錄,在查詢資料時候,預設會對全表進行掃描,這樣時間和效能的消耗都非常大。分割槽為 hdfs 上表目錄的子目錄,資料按照分割槽儲存在子目錄中。如果查詢的 where 字句的中包含分割槽條件,則直接從該分割槽去查詢,而不是掃描整個表目...

hive 內部表和外部表總結

1.外部表 external table 有external修飾,表資料儲存在hdfs上,該位置由使用者指定。刪除表時,只會刪除表的後設資料,所以外部表不是有hive完全管理的 2.內部表 internal table managed table 沒有external修飾,表資料儲存在hive預設的...

hive 外部表和內部表的區別和相互轉換

1.建立內部表時,內部表的資料檔案是儲存在指定的路徑的 如若建立外部表,則只記錄資料所在的路徑,不會對資料位置做改變。2.刪除表的時候,內部表後設資料和資料會跟著一起刪除。外部表只刪除後設資料 內部表 在外部表 原始日誌表 的基礎上做大量的統計分析,用到的中間表 結果表使用內部表儲存 內部錶轉外部表...