JSON数据上配置单元中的Where子句

JSON数据上配置单元中的Where子句,json,hadoop,mapreduce,hive,Json,Hadoop,Mapreduce,Hive,我在我的文件中使用JSON作为数组。我使用JSON serde将数据导入到表中,因为它具有类似数组的结构,我们不能将JSON_tuple和JSON_OBJECT UDF与数组一起使用,否则它会给出空值 我们不能在具有JSOn数据的HQL查询上使用where子句吗?因为每次我查询表时,它都会给出完整的JSON数据,所以它不会过滤 表中的每条记录都是一个数组,因此当where子句找到匹配项时,select*将把整个记录作为输出 由于where子句用于标记[1],因此可以使用 select marke

我在我的文件中使用JSON作为数组。我使用JSON serde将数据导入到表中,因为它具有类似数组的结构,我们不能将JSON_tuple和JSON_OBJECT UDF与数组一起使用,否则它会给出空值

我们不能在具有JSOn数据的HQL查询上使用where子句吗?因为每次我查询表时,它都会给出完整的JSON数据,所以它不会过滤


表中的每条记录都是一个数组,因此当where子句找到匹配项时,select*将把整个记录作为输出

由于where子句用于标记[1],因此可以使用

select markers[1] from complex_json where markers[1].point="4578"

这将仅获取数组中所需的JSON。

如果select查询中未指定列,则配置单元将提取原始JSON。正如franklin刚才解释的那样。

如果我在我的select类中使用标记[1],那么就没有必要在where子句中使用它。即使我添加了它,它也不会起作用。但我关心的是根据有益记录中的Point值来选择一行,您是根据where子句来选择一行的,where子句为您提供了一个数组。要从数组中检索精确的对象,请执行此选择。我不明白在select中使用它如何解决不在where中使用它的必要性,这意味着每次我想首先分析一些数据时,我必须看到JSON数据,我有哪些数组,哪些数组都有哪些值??这将不同于我们在配置单元中使用where/having条件子句的正常分析。如果你不知道数组索引,你是要查找,必须使用and函数来展平阵列。数组展平后,每个JSON都将成为一行。我尝试了横向视图和分解,但没有得到预期的结果。蜂巢>选择adid,adid1从>选择markers.point作为b,markers.hometeam作为c从complex_jsona>侧视图分解A.b adtable作为adid>侧视图分解A.c adtable1作为adid1;OK 1233劳伦斯图书馆1233汉密尔顿图书馆4578劳伦斯图书馆4578汉密尔顿图书馆1233汉密尔顿图书馆不存在,但explode工作正常。
select markers[1] from complex_json where markers[1].point="4578"