我在 hive 中有一张 table ,每小时都会通过Spark/Parquet更新

CREATE TABLE IF NOT EXISTS user
(
    name STRING,
    creation_date DATE,
    cards map<STRING,STRING>
) STORED AS PARQUET ;
假设我要查询每个用户的Gobelin卡数量。
我的查询如下所示:
 select * from user where card["Gobelin"] IS NOT NULL ;
结果看起来像这样
KillerZord1001      2016-01-02      {"Archer":"2","Gobelin":"6"}
HalfAMill       2016-02-05      {"Witch":"7","Gobelin":"8"}
但是我想拥有的是我正在寻找的 key 的值(value),更像是:
KillerZord1001      2016-01-02      6
HalfAMill       2016-02-05      8
Hive可以执行此类查询吗?

最佳答案

你可以简单地做

SELECT name, creation_date, card["Gobelin"] FROM USER
  WHERE card["Gobelin"] IS NOT NULL

10-05 19:08