所以我有一个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”字段中看到我的数据呢?
答案 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