Hive 基本教程

Hive SQL

Hive 笔记

Hive SQL 数组或map拆解函数 explode 详解

Hive SQL 内置函数全解 Hive SQL 内置函数全解


hive 内置的 explode 函数,它接收一个 array 或者 map 类型的数据作为输入,然后将 array 或 map 里面的元素按照每行的形式输出。一般情况下,其可以配合 LATERAL VIEW 一起使用。

解析 array 或 map 数据

hive> SELECT EXPLODE(ARRAY('A', 'B', 'C'));
OK
A
B
C
hive> SELECT EXPLODE(MAP('A', 10, 'B', 20, 'C', 30));
OK
A       10
B       20
C       30

搭配 lateral view 使用

LATERAL VIEW 顾名思义就是摊开数据,有如下几点特性:

  • LATERAL VIEW 用于和 UDTF 函数(如 explode、split)结合来使用。
  • 它通过 UDTF 函数将数据拆分成多行,再将多行结果组合成一个支持别名的虚拟表。
  • 主要解决在 SELECT 使用 UDTF 做查询的过程中查询只能包含单个 UDTF,不能包含其它字段以及多个 UDTF 的情况。

语法如下:

LATERAL VIEW udtf(expression) tableAlias AS columnAlias

示例如下:

SELECT
   a.dp,
   a.item 
FROM
   (
      SELECT
         dp,
         ARRAY(GET_JSON_OBJECT(log_info, '$.item_list')) AS item_list 
      FROM
         xxx.ods_xxx_log 
      WHERE
         dp = '2021-10-05' 
   )
   a LATERAL VIEW EXPLODE(item_list) t1 AS item