hive基本總結

2021-07-11 11:02:51 字數 3098 閱讀 7644

1,hive支援的型別:

tinyint  tinyint型別 

smallint smallint型別 

int     int型別

bigint  bigint型別 主要用於狀態,類別,數量的字段

boolean boolean型別  

float   float型別

double  double型別  主要用於金額的字段

string  字串型別 除上述之外的字段基本都使用string, 尤其是id和日期時間這樣的字段

2,建表:

create [external] table [if not exists] table_name 

[(col_name data_type [comment col_comment], ...)] 

[comment table_comment] 

[partitioned by (col_name data_type [comment col_comment], ...)] 

[clustered by (col_name, col_name, ...) 

[sorted by (col_name [asc|desc], ...)] into num_buckets buckets] 

[row format row_format] 

[stored as file_format] 

[location hdfs_path]

•create table 建立乙個指定名字的表。如果相同名字的表已經存在,則丟擲異常;使用者可以用 if not exist 選項來忽略這個異常

•external 關鍵字可以讓使用者建立乙個外部表,在建表的同時指定乙個指向實際資料的路徑(location)

•like 允許使用者複製現有的表結構,但是不複製資料

•comment可以為表與字段增加描述

•row format

delimited [fields terminated by char] [collection items terminated by char]

[map keys terminated by char] [lines terminated by char]

| serde serde_name [with serdeproperties (property_name=property_value, property_name=property_value, ...)]

使用者在建表的時候可以自定義 serde 或者使用自帶的 serde。如果沒有指定 row format 或者 row format delimited,將會使用自帶的 serde。在建表的時候,

使用者還需要為表指定列,使用者在指定表的列的同時也會指定自定義的 serde,hive 通過 serde 確定表的具體的列的資料。

•stored as

sequencefile

| textfile

| rcfile    

| inputformat input_format_classname outputformat             output_format_classname

如果檔案資料是純文字,可以使用 stored as textfile。如果資料需要壓縮,使用 stored as sequence 。

3,hive表分類   

1. 普通表 

普通表的建立,如上所說,不講了。其中,乙個表,就對應乙個表名對應的檔案。

2. 外部表

external 關鍵字可以讓使用者建立乙個外部表,在建表的同時指定乙個指向實際資料的路徑(location),hive 建立內部表時,會將資料移動到資料倉儲指向的路徑;

若建立外部表,僅記錄資料所在的路徑,不對資料的位置做任何改變。在刪除表的時候,內部表的元資料和資料會被一起刪除,而外部表只刪除元資料,不刪除資料。具體sql如下:

create external table test_1(id int, name string, city string) sorted by textfile row format delimited fields terminated by '\t』 location 『hdfs://

』  3. 分割槽表

有分割槽的表可以在建立的時候使用 partitioned by 語句。乙個表可以擁有乙個或者多個分割槽,每乙個分割槽單獨存在乙個目錄下。而且,表和分割槽都可以對某個列進行 clustered by 操作,

將若干個列放入乙個桶(bucket)中。也可以利用sort by 對資料進行排序。這樣可以為特定應用提高效能。具體sql如下:

create table test_1(id int, name string, city string) partitioned by (pt string) sorted by textfile row format delimited fields terminated by『\t』   

hive的排序,因為底層實現的關係,比較不同於普通排序,這裡先不講。

4,hive通過cli連線需要的jar包:

hive-exec-0.9.0.jar

hive-jdbc-0.9.0.jar

hive-metastore-0.9.0.jar

hive-service-0.9.0.jar

libfb303-0.7.0.jar 

5,例子:

create table mesh_count (mesh string,count int) row format delimited fields terminated by '/t';

6,開啟hiveserver服務命令,進入hive的bin目錄執行

nohup ./hive --service hiveserver2 &

7,hive建立外部表和普通表的區別,當普通表的時候,load hdfs的資料進hive的表中的時候會把原檔案移動到hive的目錄下,外部表就不會挪動原檔案。

create external table mesh_count (mesh string,count int) row format delimited fields terminated by '\t' stored as textfile location 'hdfs://namenode01:9000/ys_test/mesh_result/';

Hive 基本操作 總結

使用hive之前要做的操作 1 啟動dfs linux命令 start dfs.sh 2 啟動yarn linux命令 start yarn.sh 3 進入hive linux命令 hive 如下圖所示 建立表 create table t order id int,name string,rong...

hive基本操作

1.顯示所有資料庫 show databases 2.使用某個資料庫 use xx xx表示某個資料庫名 3.顯示某資料庫下的所有表 show tables 4.檢視表結構 顯示各欄位 desc 表名 5.資料匯出到本地 在hive中操作 insert overwrite local directo...

Hive基本使用

啟動hadoop sbin start all.sh 啟動hive bin hive 建立表 create table table name col name data type comment col comment create table hive wordcount context stri...