在 hive 和 presto 中创建 named_struct 的常用语法
Common syntax for creating named_struct in hive and presto
我正在尝试定义一个 sql 视图,该视图从源结构数据类型中选取元素子集并创建一个新结构。在蜂巢中我可以这样做:
create view myview as
select
id,
named_struct("cnt", bkg.cnt, "val", bkg.val) as bkg
from mybkgtable
这行得通。问题是,当从 presto 调用这个视图时,它失败了:Function named_struct not registered
发现presto没有struct数据类型,而是ROW。它适用于以下语法:
select
id,
CAST(ROW(bkg.cnt, bkg.val) as row(cnt integer, val double)) as bkg
from mybkgtable
但是,Hive 无法理解此语法。
问题是,是否可以有一个同时适用于 hive 和 presto 的视图定义?
Question is, is it possible to have one view definition that works on both hive and presto?
遗憾的是,没有。
您可以使用 coral 在 hiveql 中编写视图定义并将其转换为 presto。
我正在尝试定义一个 sql 视图,该视图从源结构数据类型中选取元素子集并创建一个新结构。在蜂巢中我可以这样做:
create view myview as
select
id,
named_struct("cnt", bkg.cnt, "val", bkg.val) as bkg
from mybkgtable
这行得通。问题是,当从 presto 调用这个视图时,它失败了:Function named_struct not registered
发现presto没有struct数据类型,而是ROW。它适用于以下语法:
select
id,
CAST(ROW(bkg.cnt, bkg.val) as row(cnt integer, val double)) as bkg
from mybkgtable
但是,Hive 无法理解此语法。
问题是,是否可以有一个同时适用于 hive 和 presto 的视图定义?
Question is, is it possible to have one view definition that works on both hive and presto?
遗憾的是,没有。
您可以使用 coral 在 hiveql 中编写视图定义并将其转换为 presto。