在Hive中查询Map值

Wil*_*ill 6 hive

我有一张蜂巢桌,由Spark/Parquet更新

CREATE TABLE IF NOT EXISTS user
(
    name STRING,
    creation_date DATE,
    cards map<STRING,STRING>
) STORED AS PARQUET ; 
Run Code Online (Sandbox Code Playgroud)

假设我想查询每个用户的Gobelin卡数量.

我的查询如下所示:

 select * from user where card["Gobelin"] IS NOT NULL ;
Run Code Online (Sandbox Code Playgroud)

结果看起来像这样

KillerZord1001      2016-01-02      {"Archer":"2","Gobelin":"6"}
HalfAMill       2016-02-05      {"Witch":"7","Gobelin":"8"}
Run Code Online (Sandbox Code Playgroud)

但我想要的是我正在寻找的关键的价值,更像是:

KillerZord1001      2016-01-02      6
HalfAMill       2016-02-05      8
Run Code Online (Sandbox Code Playgroud)

Hive可以执行此类查询吗?

Rob*_*giu 12

你可以干脆做

SELECT name, creation_date, card["Gobelin"] FROM USER 
  WHERE card["Gobelin"] IS NOT NULL
Run Code Online (Sandbox Code Playgroud)