Hive的基本操作用法

你的镁偷走了我的锌發表於2024-11-10

一、Hive庫操作

1.建立資料庫

create database bigdata32;
標準寫法:create database if not exists databases;(判斷是否存在,無論存不存在都不會報錯)

2.建立資料庫和位置

create database bigdata32_test location '/bigdata32ligang.db';

3.修改資料庫

注意:資料庫的其他後設資料資訊都是不可更改的,包括資料庫名和資料庫所在的目錄位置。
alter database dept set dbproperties('createtime'='20220531');更改建立時間

4.資料庫的詳細資訊

1.顯示資料庫
show databases;
2.透過like進行過濾
show databases like 't*';
3.檢視資料庫詳情
desc database bigdata32;
4.切換資料庫
use bigdata32;

5.刪除資料庫

drop database bigdata_test;

使用判斷
drop database if exists bigdata32_test;
注意:上面兩種寫法只有當資料庫為空的時候才能刪除
當資料庫不為空時:
drop database if exists bigdata32_test cascade;

二、Hive的資料型別

基礎資料型別
BIGINT:佔四位,64位有符號整型。取值範圍:-2 63 +1~2 63 -1。
DECIMAL:10進位制精確數字型別。precision:表示最多可以表示多少位的數字。取值範圍:1 <= precision <= 38。scale:表示小數部分的位數。取值範圍: 0 <= scale <= 38。如果不指定以上兩個引數,則預設為decimal(10,0)。
STRING:字串型別

複雜資料型別
ARRAY:arrayarray<struct<a:int, b:string>> MAP:map<string, string>map<smallint, array>

三、Hive的表操作

1.Hive的儲存格式

Hive的儲存格式:

Hive沒有專門的資料檔案格式,常見的有以下幾種:

TEXTFILE正常的文字格式,最常用的格式
​ SEQUENCEFILE
​ AVRO
RCFILE
ORCFILE
PARQUET
ORCFILE儲存檔案讀操作效率最高
ORCFILE儲存檔案佔用空間少,壓縮效率高

2.建立表

1.使用預設建表方式
create table IF NOT EXISTS students
(
id bigint,
name string,
age int,
gender string,
clazz string
)
ROW FORMAT DELIMITED FIELDS TERMINATED ',';//必選,指定分隔符

2.指定location
create table IF NOT EXISTS students2
(
id bigint,
name string,
age int,
gender string,
clazz string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/bigdata27/input1';

3.指定儲存格式
create table IF NOT EXISTS test_orc_tb
(
id bigint,
name string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS ORC
LOCATION '/bigdata29/out6'; //設定儲存的格式為orcfile,如果不指定儲存格式,預設都是textfile

4.只想建表,不想載入資料的,仿造其他資料表
create table students5 like students;


5.先建立一個空表,再透過insert into插入資料

3.載入資料

1、使用hdfs dfs -put '本地資料' 'hive表對應的HDFS目錄下'


再進行查詢

2.透過sql語句將檔案傳入hdfs上
load data local inpath '/usr/local/soft/bigdata32/data/student.txt' into table students4;
這裡inpath的路徑必須是master上的檔案的路徑

// overwrite 覆蓋載入,將檔案以覆蓋的方式載入進去
load data local inpath '/usr/local/soft/data/students.txt' overwrite into table students;

3、create table xxx as SQL語句
建立表的同時將資料傳入進去

4、insert into table xxxx SQL語句 (沒有as)
當表存在的時候將查詢的資料插入進去

Hive內外部表

面試題:內部表和外部表的區別?如何建立外部表?工作中使用外部表

1.hive內部表

當建立好表的時候,HDFS會在當前表所屬的庫中建立一個資料夾
當設定表路徑的時候,如果直接指向一個已有的路徑,可以直接去使用資料夾中的資料
當load資料的時候,就會將資料檔案存放到表對應的資料夾中
而且資料一旦被load,就不能被修改
我們查詢資料也是查詢檔案中的檔案,這些資料最終都會存放到HDFS
當我們**刪除表的時候,表對應的資料夾會被刪除,同時資料也會被刪除
預設建表的型別就是內部表
// 內部表
create table students_internal
(
id bigint,
name string,
age int,
gender string,
clazz string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/input2';

2.外部表

create external table students_external
(
id bigint,
name string,
age int,
gender string,
clazz string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/input3';

相關文章