Hive中Presto UNNEST函数的等价物是啥
Posted
技术标签:
【中文标题】Hive中Presto UNNEST函数的等价物是啥【英文标题】:What is the equivalent of Presto UNNEST function in HiveHive中Presto UNNEST函数的等价物是什么 【发布时间】:2019-01-21 04:21:36 【问题描述】:Presto 有一个 UNNEST
函数来分解由数组组成的列。 Hive有类似的吗?
有关 Presto here 的 UNNEST
功能,请参阅文档。
【问题讨论】:
【参考方案1】:使用lateral view [outer] explode
。横向视图首先将 UDTF 应用于基表的每一行,然后将生成的输出行连接到输入行以形成具有提供的表别名的虚拟表。
这是来自Presto migration from Hive docs的示例:
SELECT student, score
FROM tests
LATERAL VIEW explode(scores) t AS score;
来自Hive Lateral View docs 的示例:
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 Embedded UDTFs 列表。您也可以编写自己的 UDTF 并将其与 LATERAL VIEW
一起使用。
【讨论】:
以上是关于Hive中Presto UNNEST函数的等价物是啥的主要内容,如果未能解决你的问题,请参考以下文章
等效于 hive 中 Presto 的 transform() 函数
hive和presto的求数组长度函数区别(hive&cardinality)