hive中的lateral view结合udtf函数的使用解决生产问题
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,===============================================================================create table psn(
千家信息网最后更新 2025年12月01日hive中的lateral view结合udtf函数的使用解决生产问题
===============================================================================create table psn( id int, name string, likes array, address map)partitioned by (age int)row format delimitedfields terminated by '\t'collection items terminated by '-'map keys terminated by ':'lines terminated by '\n'; ====================================================================================hive> load data local inpath '/root/a.txt' overwrite into table psn partition(age=10);Loading data to table default.psn partition (age=10)OKTime taken: 3.817 seconds=================================================================================hive> select * from psn;OK1 zhang3 ["sing","tennis","running"] {"beijing":"daxing"} 102 li4 ["sing","pingpong","swim"] {"shanghai":"baoshan"} 103 wang5 ["read","joke","football"] {"guangzou":"baiyun"} 10==============================================================================需求: 一次性统计每种爱好出现了多少次,每个城市出现了多少次,每个区出现多少次。分析: 这个需求有点像hive实现wordcount案例,或者说它就是两个wc案例的聚合,只不过现在这个不用split。 在wc案例中,我们使用explode完美地解决了一列记录wc操作。 但是在hive中的udtf函数(split/explode)中,select子句只能单独出现一个udtf函数,且udtf函数不能与其它字段和函数一并使用。 #####只能select explode(..) from emp; #####不能select explode(..), explode(..) from emp; #####不能select id,explode(..) from emp; 这就会造成对于一些复杂逻辑就会出现无法处理的问题,就比如以上这个两列记录的wc操作。 这时候就需要用到lateral view了,它可以将udtf函数产生的多行结果组织成一张虚拟表。===================================================================================hive> select count(distinct c1),count(distinct c2),count(distinct c3)from psn >lateral view explode(likes)t1 as c1 >lateral view explode(address)t2 as c2,c3;#####t1和t2为经过udtf函数产生的虚拟表的表名,c1/c2/c3为字段别名#####数组经过explode会产生一列数据,map集合产生两列。Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 12019-04-24 22:59:16,471 Stage-1 map = 0%, reduce = 0%2019-04-24 22:59:25,681 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.76 sec2019-04-24 22:59:36,268 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 4.15 secMapReduce Total cumulative CPU time: 4 seconds 150 msecEnded Job = job_1556088929464_0004MapReduce Jobs Launched: Stage-Stage-1: Map: 1 Reduce: 1 Cumulative CPU: 4.15 sec HDFS Read: 14429 HDFS Write: 105 SUCCESSTotal MapReduce CPU Time Spent: 4 seconds 150 msecOK8 3 3Time taken: 35.986 seconds, Fetched: 1 row(s)=============================================================================
函数
案例
字段
需求
问题
复杂
一次性
不用
两个
别名
只不过
城市
子句
就是
数据
数组
是在
结果
逻辑
多行
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机数据库的三种运算
软件开发都能开发什么软件
win10 vba连接数据库
奇安信网络安全联盟河南
网络安全大赛比赛形式
自学App软件开发难吗
计算机网络技术含义
免费电信代理服务器
代理服务器实现
ups接几个服务器
年度网络安全总结
安装linux服务器
帝国神话自建服务器延迟
21软考数据库
中文医学期刊免费数据库
服务器怎样重装系统
财务网络安全报告
常州个人软件开发推荐咨询
oracle数据库的分组
校时服务器的参数
改变数据库表列的属性
t140服务器bios
部队网络技术兵种
网络安全有什么考试题
juniper网络安全
湖北邮件营销外贸软件开发
clinvar数据库突变预测
数据库与rfid
无人智能网络安全防护技术
联盟服务器炸了哪个区能上去