千家信息网

hive中的lateral view结合udtf函数的使用解决生产问题

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,===============================================================================create table psn(
千家信息网最后更新 2026年10月31日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安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 广东猪兼强互联网科技有限公司 互联网科技公司起名 西安纸贵互联网科技有限公司 互联网的科技 没上市的科技互联网公司 互联网的科技创新 互联网科技公司怎么样 广州宏创互联网科技 云电互联网科技 西安互联网科技公司 上海电发互联网科技有限公司 岳阳华臻互联网科技有限公司 中国航天科技大学国际工业互联网 本届互联网博览会上的黑科技 中科明德北京互联网科技 城市宝互联网科技有限公司 互联网科技平台产品运营 数字互联网科技有限公司 互联网科技企业文化 科技服务与互联网 互联网 卓越科技 互联网科技排名 云电互联网科技 互联网科技公司名称 须眉科技是互联网公司吗 每天都有哪些好的互联网科技 2021世界互联网领先科技成果发布 第三届互联网大会安防黑科技 如何强化互联网金融科技
0