栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQL:爆炸数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL:爆炸数组

您可以在Hive中执行以下操作:

首先,您需要一个JSON SerDe(Serializer /
Deserializer)。我见过的最实用的功能是https://github.com/rcongiu/Hive-JSON-
Serde/
。彼得·桑考斯卡斯(Peter
Sankauskas)的SerDe似乎无法处理这种复杂的JSON。在撰写本文时,您将需要使用Maven编译SerDe,并将JAR放在您的Hive会话可以到达的位置。

接下来,您将需要更改JSON格式。原因是Hive对数组采用强类型的视图,因此混合整数和其他内容将无效。考虑切换到这样的结构:

{"str": {    n1 : 1,   n2 : 134,   n3 : 61,   s1: "Matt",   st1: {"type":"registered","app":491,"value":423,"value2":12344},   ar1: ["application"],   ar2: [],   s2: "49:0"} }

接下来,您需要将JSON放在一行中。我不确定这是Hive还是SerDe的怪癖,但您需要这样做。

然后将数据复制到HDFS。

现在,您可以定义一个表并查询了:

ADD JAR /path/to/jar/json-serde-1.1.2-jar-with-dependencies.jar;CREATE EXTERNAL TABLE json (    str struct<       n1 : int, n2 : int, n3 : int,       s1 : string,       st1 : struct < type : string, app : int, value : int, value2 : int>,       ar1 : array<string>,       ar2 : array<string>,       s2 : string    > ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION '/hdfs/path/to/file';

通过此操作,您可以运行有趣的嵌套查询,例如:

select str.st1.type from json;

最后但并非最不重要的一点是,由于这是Hive特有的,因此值得更新问题和标签。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426029.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号