一、基礎數據類型
1、Hive支持的基礎數據類型包括:bool、tinyint、smallint、int、bigint、float、double、string、timestamp、date、binary、array、map、struct、union。
示例代碼:
CREATE TABLE persons ( id INT, name STRING, age INT, gender BOOLEAN, salary FLOAT );
2、Hive中的整型分為tinyint、smallint、int、bigint,分別對應8位、16位、32位、64位整數類型;
示例代碼:
CREATE TABLE users ( id TINYINT, name STRING, age SMALLINT, gender BOOLEAN, salary BIGINT );
3、Hive中的浮點數類型分為float和double,分別對應單精度浮點數和雙精度浮點數;
示例代碼:
CREATE TABLE records ( id INT, name STRING, score FLOAT );
4、Hive中的字元串類型為string,可以存儲任意長度的字元串;
示例代碼:
CREATE TABLE students ( id INT, name STRING, grade STRING );
5、Hive中的布爾類型為boolean,取值為true或false;
示例代碼:
CREATE TABLE customers ( id INT, name STRING, married BOOLEAN );
二、時間類型
1、Hive中的時間類型包括timestamp和date,分別對應時間戳和日期類型;
示例代碼:
CREATE TABLE logs ( id INT, request_time TIMESTAMP, request_date DATE );
2、使用時間類型時,可以通過Unix時間戳將時間類型轉換為整數類型,也可以通過from_unixtime函數將整數類型轉換為時間類型;
示例代碼:
SELECT from_unixtime(1580196047); SELECT unix_timestamp('2020-01-28 10:30:47');
3、Hive中還提供了一些函數用於處理時間類型,包括year、quarter、month、day、hour、minute、second等;
示例代碼:
SELECT year(request_time), month(request_time), day(request_time) FROM logs;
三、複雜數據類型
1、Hive中的數組類型為array,可以包含任意數量的元素,元素類型必須相同;
示例代碼:
CREATE TABLE products ( id INT, name STRING, tags ARRAY );
2、Hive中的映射類型為map,可以將一組key-value對存儲在一個欄位中;
示例代碼:
CREATE TABLE books ( id INT, title STRING, author MAP );
3、Hive中的結構體類型為struct,可以將多個欄位打包為一個欄位;
示例代碼:
CREATE TABLE employees ( id INT, name STRING, contact STRUCT, address STRUCT );
4、Hive中的聯合類型為union,可以將多個欄位根據不同的數據類型組合在一起;
示例代碼:
CREATE TABLE items ( id INT, name STRING, price UNIONTYPE );
四、類型轉換
1、Hive中的數據類型可以通過cast函數進行類型轉換;
示例代碼:
SELECT cast('100' AS INT), cast('3.14' AS FLOAT), cast('true' AS BOOLEAN);
2、Hive中的數據類型也可以根據需要自動進行類型轉換,但盡量避免這種情況,因為會影響查詢性能;
3、在Join和Union操作中,如果需要將數據類型相同的表合併,需要對數據類型進行調整;
示例代碼:
SELECT id, cast(price AS FLOAT) AS price FROM table1 UNION ALL SELECT id, cast(price AS FLOAT) AS price FROM table2;
五、總結
1、Hive支持多種數據類型,包括基礎數據類型、時間類型、複雜數據類型;
2、在使用數據類型時,需要注意類型的選擇和轉換,以保證查詢性能;
3、在Join和Union操作中,需要特別注意數據類型匹配的問題,以避免錯誤和性能問題。
原創文章,作者:LNAVW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/369413.html