hive函数

本文介绍了Hive中的复合数据类型,包括Structs、Maps和Arrays的使用方式,以及如何通过DOT和方括号进行存取。此外,讲解了explode函数将一行数据拆分为多行,concat_ws和collect_list函数在列转行中的应用。还讨论了array_contains和collect_set在检验集合元素和去重中的作用。Lateral View与UDTF结合使用,用于处理多行数据。最后提到了json数据处理函数get_json_object和json_tuple,以及Hive的窗口函数。
摘要由CSDN通过智能技术生成
  1. 复合数据类型

Structs: structs内部的数据可以通过DOT(.)来存取,例如,表中一列c的类型为STRUCT{a INT; b INT},我们可以通过c.a来访问域a
Maps(K-V对):访问指定域可以通过[“指定域名称”]进行,例如,一个Map M包含了一个group-》gid的kv对,gid的值可以通过M[‘group’]来获取
Arrays:array中的数据为相同类型,例如,假如array A中元素[‘a’,‘b’,‘c’],则A[1]的值为’b’

类型 解释 举例
struct 与c++中的结构体类似,可通过‘.’访问每个域的值,比如Struct{first string,last string},可以通过name.first访问第一个成员 struct(‘john’,‘doe’)
map 存储key/value对,可通过[‘key’]获取每个key的值,比如‘first’–>‘john’ 可通过name[‘last’]获取last name。 map(‘first’,‘john’,last,‘doe’)
array 同种类型的数据集合,从0开始索引,比如[‘john’,‘doe’],可通过name[1]获取doe array(‘john’,‘doe’)
  1. 行拆列 explode

explode 是一个 hive 内置的表生成函数:Built-in Table-Generating Functions (UDTF),主要是解决 1 to N 的问题,即它可以把一行输入拆成多行,比如一个 array 的每个元素拆成一行,作为一个虚表输出

explode(ARRAY) 列表中的每个元素生成一行
explode(MAP) map中每个key-value对,生成一行,key为一列,value为一列

---word count例子
select word,count(1) num
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值