当前位置:   article > 正文

Hive中array,map,struct三种数据结构说明

Hive中array,map,struct三种数据结构说明

array() 声明数组

该API会将里面的参数转成一个数组

取值:['键下标'] 非键名称

判断数组中是否有指定的键

  1. select a,a[1] -- 这里指定的是下标
  2. from (
  3. select `array`('1','2','3','4','5') a
  4. ) as t;
  5. -- ["1","2","3","4","5"] 2
  6. select a,a[1],array_contains(a,6) -- 这里指定的是下标
  7. from (
  8. select `array`(1,2,3,4,5) a
  9. ) as t;
  10. -- [1,2,3,4,5] 2 false

map() 声明map结构

该API会将参数转成键值对,参数必须是偶数,其中奇数参数看作键,偶数参数看作值。声明时类型要制定。

取值:['键名称'] 非键位置

  1. select `map`('a','b','c','d') -- {"a":"b","c":"d"}
  2. select m,
  3. m['a']
  4. from (select `map`('a', 'b', 'c', 'd') m-- {"a":"b","c":"d"}
  5. ) t;
  6. -- {"a":"b","c":"d"} b

stuct() 声明结构体

类似于Java中的类

所有参数会被当成值,不要求成对;取值是.colN取出对应字段N的值

  1. select obj,obj.col1 --,obj.b报错
  2. from (
  3. select struct('a', 'b', 'c') obj
  4. ) t;
  5. -- {"col1":"a","col2":"b","col3":"c"} a

name_struct()

参数必须成对出现,奇参会当成键,偶参会被当成值

  1. select obj,obj.a
  2. from (
  3. select named_struct('a', 1, 'b', 2, 'c', 3) obj
  4. ) t;
  5. -- {"a":1,"b":2,"c":3} 1

备注:Hive建表对复杂JSON格式(对象里套对象)文件处理中,如果字段固定,用struct结构体存储;如果字段不固定,用map结构处理。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/462867
推荐阅读
相关标签
  

闽ICP备14008679号