Hive 中 Presto UNNEST 函数的等价物是什么

What is the equivalent of Presto UNNEST function in Hive

Presto 有一个 UNNEST 函数来分解由数组组成的列。 Hive 有类似的吗? 有关 Presto here.

UNNEST 功能,请参阅文档

使用lateral view [outer] explode。横向视图首先将 UDTF 应用于基础 table 的每一行,然后将生成的输出行连接到输入行以形成具有提供的 table 别名的虚拟 table。

这是来自 Presto migration from Hive docs 的示例:

SELECT student, score
FROM tests
LATERAL VIEW explode(scores) t AS score;

以及 Hive Lateral View 文档中的示例:

SELECT * FROM exampleTable
LATERAL VIEW explode(col1) myTable1 AS myCol1
LATERAL VIEW explode(myCol1) myTable2 AS myCol2;

使用 OUTER 关键字生成行,即使 LATERAL VIEW 通常不会生成行:

SELECT * FROM src LATERAL VIEW OUTER explode(array()) C AS a limit 10; 

在此示例中,array 为空,但将返回 src 中的行

横向视图不仅可以与 explode() UDTF 一起使用。请参阅带有示例的 Hive 嵌入列表 UDTFs。您也可以编写自己的 UDTF 并将其与 LATERAL VIEW.

一起使用