Hive 复杂数据类型

复杂数据类型一共有四种:

  1. ARRAY:数组
  2. MAP:键值对
  3. STRUCT:命名字段集合
  4. UNION:从几种数据类型中指明选择一种,UNION的值必须于这些数据类型之一完全匹配;

     

所用函数说用:

列转行

  1. EXPLODE(col): 将 hive 一列复杂的 array 或者 map 结构拆分成多行。
  2. LATERAL VIEW
    用法:LATERAL VIEW udtf(expression) tableAlias  as columnAlias
    解释:用于和 split,explode 等 UDTF一起使用,它能够将一系列数据拆成多行,在此基础上可以对拆分后的数据进行聚合。

行转列

  1. CONCAT(string A/col, string B/col...):  返回输入字符串连接后的结果,支持任意个输入字符串;
  2. CONCAT_WS(separator,str1,str2,...):  它是一个特殊形式的 CONCAT()。第一个参数剩余参数见的分隔符。分隔符可以是与剩余参数一样的字符串。如果分隔符是NULL,返回值也将为NULL。这个函数会跳过分隔符参数后的任何NULL和空字符串。分隔符将被加到被连接的字符串之间;
  3. COLLECT_SET(col):函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生array类型的字段。

ARRAY

  1. 创建名为 t2的表,只有 person 和 friends 两个字段, person 是字符串类型, friends 是数组类型,通过文本文件导入数据时,person 和 friends之间的分隔符是竖线,friends 内部的多个元素之间的分隔符是逗号,
    注意分隔符的语法:
     
    create table if not exists t2(
    person string,
    friends array<string>
    )
    row format delimited
    fields terminated by '|'
    collection items terminated by ',';

     

  2. 创建文本文件002.txt, 内容如下:可见只有两条记录,第一条person字段值为 tom,friends字段里面有三个元素,用逗号分隔:
     

    tom|tom_friend_0,tom_friend_1,tom_friend_2
    jerry|jerry_friend_0,jerry_friend_1,jerry_friend_2,jerry_friend_3,jerry_friend_4,jerry_friend_5

     <

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值