博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive查询之列转行
阅读量:3936 次
发布时间:2019-05-23

本文共 1046 字,大约阅读时间需要 3 分钟。

1.函数说明

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

LATERAL VIEW

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

解释:用于和split, explodeUDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。

2.数据准备

表   数据准备

movie

category

《疑犯追踪》

悬疑,动作,科幻,剧情

《Lie to me》

悬疑,警匪,动作,心理,剧情

《战狼2》

战争,动作,灾难

 

EXPLODE(col) 函数演示:

select explode(category) from movie_info;

结果如下:

 悬疑

动作

科幻

剧情

悬疑

 警匪

动作

心理

剧情

战争

动作

灾难

explode可以将一个数组拆分成多个列

 

 

3.需求

将电影分类中的数组数据展开。结果如下:

《疑犯追踪》      悬疑

《疑犯追踪》      动作

《疑犯追踪》      科幻

《疑犯追踪》      剧情

《Lie to me》   悬疑

《Lie to me》   警匪

《Lie to me》   动作

《Lie to me》   心理

《Lie to me》   剧情

《战狼2》        战争

《战狼2》        动作

《战狼2》        灾难

4.创建本地movie.txt,导入数据

[tom@hadoop102 datas]$ vi movie.txt

《疑犯追踪》   悬疑,动作,科幻,剧情

《Lie to me》 悬疑,警匪,动作,心理,剧情

《战狼2》 战争,动作,灾难

5.创建hive表并导入数据

create table movie_info(

    movie string,

    category array<string>)

row format delimited fields terminated by "\t"

collection items terminated by ",";

 

load data local inpath "/opt/module/datas/movie.txt" into table movie_info;

6.按需求查询数据

select

    movie,

    category_name

from

    movie_info lateral view explode(category) table_tmp as category_name;

 需求二:

 查询结果:

转载地址:http://lcuwi.baihongyu.com/

你可能感兴趣的文章
关于win10的升级
查看>>
cacti突然不显示流量
查看>>
发现一个好工具记录一下,U盘启动ISO文件。
查看>>
centos7下配置网卡以及查询网卡UUID
查看>>
适用于旧计算机的10款最佳轻量级Linux发行版
查看>>
在VMware Workstation中批量创建上千台虚拟机
查看>>
linux常用软件收集
查看>>
linux查看桌面环境
查看>>
centos8安装ntfs-3g后,不能自动挂载U盘(NTFS格式)
查看>>
Linux安装显卡驱动
查看>>
使用minicom
查看>>
linux常用外设-打印机指纹和蓝牙的安装管理
查看>>
记录一下安装在移动硬盘上的fedora linux v33在各种笔记本下的兼容性
查看>>
关于安装系统后不能启动的问题!
查看>>
U盘的挂载过程-先记录一下
查看>>
python程序启动过程报错的排错一般步骤
查看>>
linux下UEFI的管理
查看>>
类thinkpad笔记本安装deepinv20后启动黒屏的解决
查看>>
存在UEFI后的启动
查看>>
重置vCenter Server Appliance 7.0根密码
查看>>