Presto查询行数组

时间:2017-07-28 00:55:38

标签: arrays hadoop hive presto

所以我有一个hive外部表,其架构如下所示:

{
.
.
`x` string,
`y` ARRAY<struct<age:string,cId:string,dmt:string>>,
`z` string
}

所以基本上我需要查询一个列(列“y”),它是嵌套json的数组, 我可以从hive看到列“y”的数据,但是该列中的数据似乎对于presto是不可见的,即使presto知道该字段的模式,如下所示:

array(row(age varchar,cid varchar,dmt varchar))

正如你所看到的,presto已经知道这个字段是行数。

注意:

1.桌子是一个蜂巢外部桌子。

2.我通过使用ODBC驱动程序得到字段“y”的模式,但数据只是全空,但我可以在hive中看到类似的内容: [{ “年龄”: “12”, “CID”: “bx21hdg”, “DMT”: “120”}]

3.Presto查询hivemetastore的架构。

4.Table被存储为镶木地板格式。

那么我怎么能在“y”字段中看到我的数据呢?

1 个答案:

答案 0 :(得分:0)

请尝试以下操作。这应该在Presto中起作用。

“如果数组元素为行数据类型,则结果为元素数据类型中每个行字段的表均为一列。结果表的列数据类型与相应的数组元素行字段数据类型匹配” >

select
    y,age,cid,dmt
from
    table
    cross join UNNEST(y)  AS  nested_data(age,cid,dmt)
参考:https://www.ibm.com/support/knowledgecenter/zh-CN/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0055064.html