Hive支持复杂数据类型,如STRUCT、ARRAY和MAP
- 使用
WHERE
子句过滤Struct类型:
假设我们有一个名为employee
的表,其中包含一个名为info
的STRUCT类型字段,该字段包含员工的姓名、年龄和部门信息。
CREATE TABLE employee ( id INT, info STRUCT);
要过滤出年龄大于30岁的员工,可以使用以下查询:
SELECT * FROM employee WHERE info.age > 30;
- 使用
LATERAL VIEW
和EXPLODE
过滤ARRAY类型:
假设我们有一个名为products
的表,其中包含一个名为tags
的ARRAY类型字段,该字段包含产品标签。
CREATE TABLE products ( id INT, tags ARRAY);
要过滤出包含"electronics"标签的产品,可以使用以下查询:
SELECT p.* FROM products p LATERAL VIEW INLINE(p.tags) t AS tag WHERE tag = 'electronics';
- 使用
LATERAL VIEW
和EXPLODE
过滤MAP类型:
假设我们有一个名为orders
的表,其中包含一个名为metadata
的MAP类型字段,该字段包含订单元数据。
CREATE TABLE orders ( id INT, metadata MAP);
要过滤出包含"priority"键且值为"high"的订单,可以使用以下查询:
SELECT o.* FROM orders o LATERAL VIEW INLINE(o.metadata) m AS key, value WHERE key = 'priority' AND value = 'https://www.yisu.com/ask/high';
这些示例展示了如何在Hive中过滤复杂数据类型。根据实际需求和数据结构,可以相应地调整查询。