Hive Lateral View
目录
Hive explode介绍:
Hive posexplode介绍:
Lateral View介绍:
使用多个Lateral View:
outer关键字:
Hive explode介绍:
它会将一行数据转成多行,也就是将行数据转成列数据,它所接收的参数为array和map类型的数据,语法如下:
array参数:
select explode(array) as arr_name from tableName;
map参数:
select explode(map) as (map_key,map_value) from tableName;
Hive posexplode介绍:
与explode不同的是他会多生成一列索引值,从0开始。
Lateral View介绍:
Lateral view is used in conjunction with user-defined table generating functions such as explode(). As mentioned in Built-in Table-Generating Functions, a UDTF generates zero or more output rows for each input row. A lateral view first applies the UDTF to each row of base table and then joins resulting output rows to the input rows to form a virtual table having the supplied table alias.
Lateral View与用户定义的函数(如explode())结合使用。UDTF为每个输入行生成零个或多个输出行。Lateral View首先将UDTF应用于表的每一行,然后将生成的输出行与输入行连接起来,以形成具有提供的表别名的虚拟表。
这个虚拟表会和输入的行进行join,达到连接UDTF外的select字段的目的。
如下:
也可以使用posexplode:
也可以再进一步进行聚合:
使用多个Lateral View:
将上面表的page_id也改为多个用逗号隔开的形式,如下
将page_id和addid_list都拆分开:
如果想要不要重复数据,也可以使用posexplode,然后加一个where条件,上面的数据不太合适,但是效果是相同的,几front_page-1给1,front_page-2给2,contact_page-1给4,contact_page-2给5:
其实我们发现两个列拆分后就是进行了一个全连接。
outer关键字:
UDTF默认是忽略输出空的,outer关键字的作用是在UDTF转换列的时候将其中的空也给展示出来,显示为NULL,如下:
Hive Lateral View相关推荐
- Hive Lateral View、视图、索引
一.Hive Lateral View 1.Lateral View用于和UDTF函数(explode.split)结合来使用. 2.首先通过UDTF函数拆分成多行,再将多行结果组合成一个支持别名的虚 ...
- Hive Lateral View + explode 详解
hive中的函数分为3类,UDF函数.UDAF函数.UDTF函数 UDF:一进一出 UDAF:聚集函数,多进一出,类似于:count/max/min UDTF:一进多出,如explore().pose ...
- Hive lateral view 的用法
lateral view 的语法格式 lateral view: LATERAL VIEW udtf (expression) tableAlias AS coluumAlias ( ',' , co ...
- Hive Lateral View使用指南
1. 语法 lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)* fromCl ...
- [hive]lateral view炸开两层
一. 说明 1.lateral view 侧视图lateral view要和explode/split等UDTF函数一起使用,他可以在函数拆分成多行的基础上,将表其他字段按照拆分结果进行聚合. 2.用 ...
- Hive Lateral View explode字段值为空时,导致数据异常丢失解决方案
1.问题描述 日常工作中,我们经常会用Lateral View 结合explode把非结构化数据转化成结构化数据,但是该方法对应explode的内容是有非null限制的,否则就有可能造成数据缺失. 现 ...
- hive lateral view explode列拆分与行转列用法
在日常工作中,我们在处理数据时,会遇到某个列存在多个数据的情况,如果想拿到这个列里面每个数据进行后续处理的话,这种情况下有两种处理方式: 第一种:如果这个列多个数据是固定数目,可以使用split切分 ...
- mysql explode函数_hive中,lateral view 与 explode函数
hive中常规处理json数据,array类型json用get_json_object(#,"$.#")这个方法足够了,map类型复合型json就需要通过数据处理才能解析. exp ...
- hive的lateral view行转列
1.hive中的行转列最常用的就是lateral view的语法,例如: select id,vcol from t lateral view explode(col) vtable as vcol ...
最新文章
- Google Colab——用谷歌免费GPU跑你的深度学习代码
- 数据分析利器Jupyter Notebook!
- 深圳美景品牌策划机构:美景、BOBDOG传媒合作论坛广州举行
- Android开发之核心特性SearchView的开发使用(源代码分享)
- layui token 过期 重新登陆
- Linux下的命令总结笔记(二)
- python中temp_python temp是什么
- Overlay Surfaces (覆盖表面)
- leetcode43. 字符串相乘 经典大数+和*
- 搜索引擎登录工具_“搜索引擎营销”有多重要!你知道吗?
- Windows用户模式下的线程同步
- 剑指offer-序列化二叉树
- MySQL MHA切换失败一例
- centos从安装到环境配置
- C++标准库分析总结(一)
- Python 数独求解
- Safari 神器,手机平板都能用,我们找到了 14 个超实用浏览器插件
- How to make seperate debuginfo file
- 教学向|ZB利用分组Dynamesh,对模型进行重建细分!
- 软件设计模式“单例模式”和“工厂模式”
热门文章
- 图片格式区别:png8,png24,jpg,jpeg,gif,webp
- 转载 :【非技术】谈谈简历那些事儿
- linux操作系统之 组管理 终端命令(添加组删除组等命令)详解 简单易懂~
- 拉格朗日插值 java_插值-拉格朗日插值法
- 视频转换为GIF的方法有哪些
- FLASH与ASP通信原理入门
- R语言epiDisplay包的tab1函数计算数据框中指定变量的频率并可视化(一维频率表、包含频数的百分比、累积的百分比、使用条形图可视化频数分布)、设置cum.percent参数即使存在缺失值也显示
- 基于Unity3D的Android游戏添加google广告的方法——使用AdMob
- 中国对激光产品的检测认证要求
- Unity中实现激光效果——Unique Lasers Volume插件