hive中split(),explode()和lateral row
split()函数是用于切分数据,也就是将一串字符串切割成了一个数组,标准格式为split(str,regex),支持正则切分不过有点奇怪的是,对于 “.”,"|“这样的特殊字符,不加”\“的时候是特殊字符,加了以后才是普通字符,而对于”\d"的字符,需要加"\“后才是特殊字符,就是是说”\\d"才是匹配数字。
假设我有一张表(demo)如下:
用split()函数对name字段切分
select split(name,',') as name,age from demo;
结果如下,返回值是一个array数组
explode()函数用于打散行的函数(将一行的数据拆分成多行,它的参数必须为map或array)。这个函数常和split()并用
如下
select explode(split(name,',')) as name from demo;
上述sql代码表示将name字段按“,”分割,再按得到的数组利用explode打散成多行
上面这各视图我们只能看到name列,如果我写成
select explode(split(name,',')) as name,age from demo;
是不是就可以得到name,age两列了呢。
事实是hive不支持这样的操作
一个select后面只能获得一个explode产生的视图,如果要显示多个列,则需要将多个视图合并。
lateral view就是做这样的事的
如下(将name列打散,age列不打散)
select rename,age from demo lateral view explode(split(name,',')) demo as rename;
-- 命名成rename这样这句话好理解一点,不会和原来的name列搞混
结果如下
如果将name,age同时打散合并
select name,age from demo
lateral view explode(split(name,',')) demo as name
lateral view explode(split(age,',')) demo as age;
结果如下
我们可以看见,这时候两个later view合并实际上是做了一个全连接。如果要一一对应可能只能自己写函数了。
hive中split(),explode()和lateral row相关推荐
- Hive中的explode使用全解(附图片详解)
数据表: 表名:default.class_info,分别是班级,姓名,成绩 3列 单列Explode: 需求:将student这一列中数据由一行变为多行(使用split和explode,并结合lat ...
- hive中的lateral view 与 explode函数的使用
explode与lateral view在关系型数据库中本身是不该出现的,因为他的出现本身就是在操作不满足第一范式的数据(每个属性都不可再分), 本身已经违背了数据库的设计原理(不论是业务系统还是数据 ...
- hive中的lateral view的解析
hive中的lateral view的解析 用json存储的概率比较大,直接导入hive为基础的数仓系统中,就需要经过ETL过程解析这类数据,explode与lateral view在这种场景下大显身 ...
- Hive中lateral view的应用到源码解读
对于从事大数据开发的同学,经常会应用到explode(炸裂函数)和lateral view(侧输出流). Explode(炸裂函数) 参数必须是array或者map格式(通常跟split函数使用): ...
- explode与lateral view解析 hive
工作中看代码时遇到lateral view explode(split(sni_type,',')) snTable as sni_info ,初看挺一脸懵逼的,细查之后才明白是对字段sni_typ ...
- hive中的 lateral view
lateral view用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合. 一个简单的例子,假设我们有一张表pageAds,它有 ...
- hive中explode函数的用法
hive中explode函数的用法 explode函数是一个炸裂函数他可以做一下转换 将这个表格 +--------------+-----------------------------+ | mo ...
- python列转行函数_Python pandas 列转行操作详解(类似hive中explode方法)
最近在工作上用到Python的pandas库来处理excel文件,遇到列转行的问题.找了一番资料后成功了,记录一下. 1. 如果需要爆炸的只有一列: df=pd.DataFrame({'A':[1,2 ...
- hive中的分区表与视图
Hive主要由用户接口模块.驱动模型以及元数据存储模块3个模块组成: 用户接口模块 用户接口模块包括CLI.Hive网页接口(Hive Web Interface,HWI).JDBC.ODBC.T ...
最新文章
- 0x58 数据结构优化DP
- jquery和JavaScript区别
- 台湾国立大学郭彦甫Matlab教程笔记(12) advanced 2D plot 下
- 给opentaps添加定制的表和字段
- Kendo UI Professional Q3 2015 Beta发布[附下载]
- linux7.2 静态IP设置,Centos 7 学习之静态IP设置
- eeprom stm8l 擦除 读写_[STM8L]EEPROM操作读与写
- 检验int值在list中是否存在_R语言统计与绘图:卡方检验
- 基于JAVA+SpringMVC+Mybatis+MYSQL的停车预约管理系统
- [洛谷P3242] [HNOI2015]接水果
- 51单片机产生1Hz-5kHz可调占空比方波
- 计算机操作系统pv操作讲解,计算机操作系统PV操作例题
- 5-1MongoDB 实验——数据备份和恢复--edu上面的nosql题目
- 恢复linux硬盘数据,Linux下的硬盘数据如何恢复?
- [dataTables使用的坑]requested unknown parameter 'XXX' for row xx, column xx
- 用Python从大到小排序
- 鸿蒙手机系统新桌面布局,鸿蒙系统是什么样的界面,详解华为鸿蒙系统
- 金融业信贷风控算法2-初等统计理论
- 机智云AIoT开发平台,物联网开发和运营从未如此简单
- 笔记本计算机半角数字切换,半角字符怎么输入?如何切换为-全角字符