使用json serde将json数据摄取到配置单元中

fnatzsnv  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(208)

我正试图使用json serde将下面的json数据摄取到配置单元中,但是得到一个错误。首先-这个json数据有效吗?如果是,如何创建agentid的单列表,其值为123456-123456。

{"agentId":{"string":"123456-123456"}}

CREATE EXTERNAL TABLE testingjson(
    agentId map <string>
)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS TEXTFILE
LOCATION '/.../json_table';

编译语句时出错:失败:parseexception行4:20不匹配的输入“>”,应在Map类型的“string”附近

apeeds0o

apeeds0o1#

是的,json是有效的。
尝试以下ddl和
如果需要值123456-123456,那么使用select agentid['string']from testingjson;

hive>CREATE EXTERNAL TABLE testingjson(
agentId map <string,string>
)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS TEXTFILE 
LOCATION '/.../json_table';

hive> select * from testingjson;
+-----------------------------+--+
|     testingjson.agentid     |
+-----------------------------+--+
| {"string":"123456-123456"}  |
+-----------------------------+--+
hiv> select agentid['string'] from testingjson;
+----------------+--+
|      _c0       |
+----------------+--+
| 123456-123456  |
+----------------+--+

相关问题