Hive常用复合数据类型
在Hive中,除了支持基本数据类型(如整型、字符串型等),还支持一些复合数据类型,以便更好地处理结构化数据。本文将介绍Hive中常用的复合数据类型,并给出相应的代码示例。
1. 数组(Array)
数组是一种有序的数据集合,其中的元素可以有重复。在Hive中,数组的元素类型可以是任意其他数据类型,包括基本数据类型和复合数据类型。
创建一个包含字符串元素的数组的示例代码如下:
-- 创建一个包含字符串元素的数组
CREATE TABLE array_example (
id INT,
names ARRAY<STRING>
);
-- 插入数据
INSERT INTO array_example VALUES (1, ARRAY('Alice', 'Bob', 'Charlie'));
INSERT INTO array_example VALUES (2, ARRAY('David', 'Emily'));
-- 查询数据
SELECT * FROM array_example;
上述代码中,我们创建了一个名为array_example
的表,表中有两个列,一个是id
,一个是names
,names
列的数据类型是ARRAY<STRING>
,表示这是一个包含字符串元素的数组。我们向表中插入了两条数据,并查询了该表的全部数据。
2. 结构体(Struct)
结构体是一种将多个字段组合在一起的数据类型,每个字段可以有不同的数据类型。在Hive中,结构体的字段可以是任意其他数据类型,包括基本数据类型和复合数据类型。
创建一个包含结构体字段的表的示例代码如下:
-- 创建一个包含结构体字段的表
CREATE TABLE struct_example (
id INT,
person STRUCT<name:STRING, age:INT, gender:STRING>
);
-- 插入数据
INSERT INTO struct_example VALUES (1, named_struct('name', 'Alice', 'age', 25, 'gender', 'female'));
INSERT INTO struct_example VALUES (2, named_struct('name', 'Bob', 'age', 30, 'gender', 'male'));
-- 查询数据
SELECT * FROM struct_example;
上述代码中,我们创建了一个名为struct_example
的表,表中有两个列,一个是id
,一个是person
,person
列的数据类型是STRUCT<name:STRING, age:INT, gender:STRING>
,表示这是一个包含名字、年龄和性别字段的结构体。我们向表中插入了两条数据,并查询了该表的全部数据。
3. Map(Map)
Map是一种键值对的集合,其中的键和值都可以是任意其他数据类型,包括基本数据类型和复合数据类型。在Hive中,Map的键和值的数据类型必须一致。
创建一个包含Map字段的表的示例代码如下:
-- 创建一个包含Map字段的表
CREATE TABLE map_example (
id INT,
properties MAP<STRING, INT>
);
-- 插入数据
INSERT INTO map_example VALUES (1, map('key1', 100, 'key2', 200));
INSERT INTO map_example VALUES (2, map('key3', 300));
-- 查询数据
SELECT * FROM map_example;
上述代码中,我们创建了一个名为map_example
的表,表中有两个列,一个是id
,一个是properties
,properties
列的数据类型是MAP<STRING, INT>
,表示这是一个包含字符串键和整型值的Map。我们向表中插入了两条数据,并查询了该表的全部数据。