如何在impala中查询数组元素?

时间:2018-02-12 09:09:43

标签: hadoop hive impala

我在impala创建了一个表,有两列,

+-----------+---------------------+---------+
| name      | type                | comment |
+-----------+---------------------+---------+
| unique_id | string              |         |
| cmap      | array<struct<       |         |
|           |   fieldname:string, |         |
|           |   fieldid:string,   |         |
|           |   fielddata:string  |         |
|           | >>                  |         |
+-----------+---------------------+---------+

我需要设置cmap查询unique_id的条件,例如

(fieldname="ip"and fielddata="192.168.1.145") and(fieldname="wid" and fielddata="15") 

我写了这个sql但无法查询它,但我在表中插入了数据

sql:

select unique_id  from s_click_parquet,s_click_parquet.cmap as lst  where ( fieldname="ip" and fieldData="192.168.1.145") and(fieldname="wid" and fielddata="15");

1 个答案:

答案 0 :(得分:0)

您通常使用方括号访问数组,但是您可以拥有一个结构数组,而不仅仅是一个数组。

您可以{{1}}一个struct数组来使其成为多行,并将字段拆分为可查询列。

然后你可以像普通表一样查询它。

{{1}}