Hive中的数组和结构体是处理复杂数据的有力工具。对于初学者,常见的问题包括如何创建数组、如何填充元素以及如何将数组展开为行。本文逐步介绍这些操作,并指出需要注意的常见问题。 首先,创建一个包含整数数组类型的表,SQL语句如下: CREATE TABLE example_array (id INT,
Hive数组元素填充方法
作者:技术拾光
时间:2026-07-26
浏览:143
Hive中的数组和结构体是处理复杂数据的有力工具。对于初学者,常见的问题包括如何创建数组、如何填充元素以及如何将数组展开为行。本文逐步介绍这些操作,并指出需要注意的常见问题。

- 首先,创建一个包含整数数组类型的表,SQL语句如下:
CREATE TABLE example_array (id INT, int_array ARRAY<INT>);
- 插入数据时,使用
ARRAY()构造函数即可:
INSERT INTO example_array (id, int_array) VALUES (1, ARRAY(1, 2, 3));
INSERT INTO example_array (id, int_array) VALUES (2, ARRAY(4, 5));
- 若要将数组展开为多行记录,可以使用
LATERAL VIEW配合EXPLODE函数(此处示例使用了INLINE,需要注意INLINE通常用于结构体数组,请根据实际情况选择)。示例写法如下:
SELECT id, int_array[i] as element
FROM example_array
LATERAL VIEW INLINE(int_array) as element;
执行后得到的结果:
id | element
---------
1| 1
1| 2
1| 3
2| 4
2| 5
- 有时数组中可能包含空值,或需要将空数组统一填充为默认值。Hive 2.3及以上版本提供了
ARRAY_FILL函数,例如填充为0:
SELECT id, ARRAY_FILL(0, SIZE(int_array), 0) as filled_array
FROM example_array;
结果如下:
id | filled_array
---------
1| [0, 0, 0]
2| [0, 0]
需要注意的是,ARRAY_FILL函数仅在Hive 2.3及以上版本中可用。如果使用较旧版本,则需要编写自定义函数(UDF)来模拟填充逻辑。另一种方法是使用COALESCE配合EXPLODE再聚合,但步骤较为复杂。
实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。
相关文章