栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hive中行转列与列转行

Hive中行转列与列转行

行专列

CONCAt(string A/col, string B/col…):返回输入字符串连接后的结果,支持任意个输入字

符串;

CONCAT_Ws(separator, str1, str2,...):它是一个特殊形式的 CONCAt()。第一个参数剩余参为指定分隔符。

CONCAT_Ws(separator, array_name):数组以separator为分隔符进行拼接。

COLLECT_SET(col):函数只接受基本数据类型,它的主要作用是将某字段的值进行去重

汇总,产生 Array 类型字段

COLLECT_LIST(col):函数只接受基本数据类型,它的主要作用是将某字段的值进行

汇总(不去重),产生 Array 类型字段

需求,将同一学院的学生分在一组

1	伍迪	计算机
2	均已	艺术
3	弗莱	计算机
4	班德	计算机
5	莉拉	艺术
6	教授	计算机
7	乌来	艺术
8	狄克	电子

实现效果

 实现语句:

select object,concat_ws("|",collect_list(name)) 
    from lineToColumn group by object;

列转行

EXPLODE(col):将 hive 一列中复杂的 Array 或者 Map 结构拆分成多行。

SPLIT(STRING s,STRING pattern)

按照正则表达式pattern分割字符串,并将分割后的字符串以字符串数组的方式返回。

使用UDTF的时候,只支持一个字段,这时候就需要LATERAL VIEW出场了.

LATERAL VIEW

用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias

解释:用于和 split, explode 等 UDTF 一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。侧视图的意义是配合explode(或者其他的UDTF),一个语句生成把单行数据拆解成多行后的数据结果集。

ateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一或者多行,lateral view再把结果组合,产生一个支持别名表的虚拟表。

将上述数据实现如下效果

实现代码:

hive (db_test)> 
              > select names,object 
              > from columnToLine 
              > lateral VIEW explode(split(columnToline.`_c1`,"\|")) t1 as names;

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

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

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