一、基础数据类型
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/n/369413.html