【Hive】表生成(Table-Generating)函数
Hive版本: hive-1.1.0-cdh5.14.2
1. 列转行函数:explode
(1) 输入类型为array
语法:explode(ARRAY a)
返回值:T
描述:展开array,其中每个元素占一行
0: jdbc:hive2://node03:10000> select explode(array('A', 'B', 'C'));
+------+--+
| col |
+------+--+
| A |
| B |
| C |
+------+--+
(2) 输入类型为map
语法:explode(MAP<Tkey,Tvalue> m)
返回值: Tkey,Tvalue
描述:展开map,每个k-v对占一行
0: jdbc:hive2://node03:10000> select explode(map('A',10, 'B',20, 'C',30));
+------+--------+--+
| key | value |
+------+--------+--+
| A | 10 |
| B | 20 |
| C | 30 |
+------+--------+--+
2. 列转行函数(增加行号):posexplode
语法: posexplode(ARRAY a)
返回值: int,T
描述: 展开array,并返回元素在array中的索引号
0: jdbc:hive2://node03:10000> select posexplode(array('A','B','C'));
+------+------+--+
| pos | val |
+------+------+--+
| 0 | A |
| 1 | B |
| 2 | C |
+------+------+--+
3. 列转行函数:inline
语法:inline(ARRAY<STRUCTf1:T1,...,fn:Tn> a)
返回值: T1,…,Tn
描述: 展开嵌套struct的array,每个struct占一行
0: jdbc:hive2://node03:10000> select inline(array(struct('A',10,date '2015-01-01'), struct('B', 20, date '2016-02-02')));
+-------+-------+-------------+--+
| col1 | col2 | col3 |
+-------+-------+-------------+--+
| A | 10 | 2015-01-01 |
| B | 20 | 2016-02-02 |
+-------+-------+-------------+--+
4. json解析函数: json_tuple
语法:json_tuple(string jsonStr,string k1,…,string kn)
返回值: string1,…,stringn
描述:解析jsonstr,并按指定的key返回结果。一次调用,可以返回多个键值,所以比get_json_object高效。
0: jdbc:hive2://node03:10000> set hivevar:jsonstr = '{"store":{"fruit":\[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}], "bicycle":{"price":19.95,"color":"red"} },"email":"amy@only_for_json_udf_test.net","owner":"amy"}';0: jdbc:hive2://node03:10000> select b.* from
. . . . . . . . . . . . . . > (select ${hivevar:jsonstr} as jsonstr) a
. . . . . . . . . . . . . . > lateral view json_tuple(a.jsonstr, 'email', 'owner') b as email, owner;
+---------------------------------+----------+--+
| b.email | b.owner |
+---------------------------------+----------+--+
| amy@only_for_json_udf_test.net | amy |
+---------------------------------+----------+--+
5. url解析函数: parse_url_tuple
语法: parse_url_tuple(string urlStr,string p1,…,string pn)
返回值: string1,…,stringn
描述:解析urlstr,返回指定部分的值。不同于parse_url(),parse_url_tuple可以一次返回url多个部分的值。可以指定的有效值为: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:
0: jdbc:hive2://node03:10000> set hivevar:urlstr = 'https://www.tableName.com/path1/p.php?k1=v1&k2=v2#Ref1';0: jdbc:hive2://node03:10000> select parse_url_tuple(${hivevar:urlstr},'HOST','QUERY:k1','REF');
+--------------------+-----+-------+--+
| c0 | c1 | c2 |
+--------------------+-----+-------+--+
| www.tableName.com | v1 | Ref1 |
+--------------------+-----+-------+--+0: jdbc:hive2://node03:10000> select b.* from
. . . . . . . . . . . . . . > (select ${hivevar:urlstr} as urlstr) a
. . . . . . . . . . . . . . > lateral view parse_url_tuple(a.urlstr,'HOST','QUERY:k1','REF') b as host,k1,ref;
+--------------------+-------+--------+--+
| b.host | b.k1 | b.ref |
+--------------------+-------+--------+--+
| www.tableName.com | v1 | Ref1 |
+--------------------+-------+--------+--+
【Hive】表生成(Table-Generating)函数相关推荐
- Hive Sql 大全(hive函数,hive表)
Hive Sql 大全 本节基本涵盖了Hive日常使用的所有SQL,因为SQL太多,所以将SQL进行了如下分类: 一.DDL语句(数据定义语句): 对数据库的操作:包含创建.修改数据库 对数据表的操作 ...
- 用puthivestreaming把hdfs里的数据流到hive表
全景图: 1. 创建hive表 CREATE TABLE IF NOT EXISTS newsinfo.test(name STRING ) CLUSTERED BY (name)INTO 3 BUC ...
- 大数据基础之Hive(四)—— 常用函数和压缩存储
作者:duktig 博客:https://duktig.cn (文章首发) 优秀还努力.愿你付出甘之如饴,所得归于欢喜. 更多文章参看github知识库:https://github.com/dukt ...
- spark读取hive表异常,处理WARN HiveExternalCatalog: The table schema given by Hive metastore
文章目录 1 问题概述 1.1 数据库表状况 1.2 问题背景 2 报错场景 2.1 修改Hive元数据信息 2.2 报错信息 2.3 其他现象 2.4 查看表结构时的发现 2.5 报错分析 2.6 ...
- R语言将dataframe长表转化为宽表实战:使用reshape函数、使用tidyr包的spread函数、使用data.table
R语言将dataframe长表转化为宽表实战:使用reshape函数.使用tidyr包的spread函数.使用data.table 目录
- 理解Hive表(Hive Table)
Hive表逻辑上有表的数据和相关的元数据组成.元数据描述表的结构,索引等信息.数据通常存放在HDFS中,虽然任意的Hadoop文件系统都能支持,例如Amazon的S3或者而本地文件系统.元数据则存在关 ...
- hadoop项目实战--ETL--(三)实现mysql表到HIVE表的全量导入与增量导入
一 在HIVE中创建ETL数据库 ->create database etl; 二 在工程目录下新建MysqlToHive.py 和conf文件夹 在conf文件夹下新建如下文件,最后的工程目录 ...
- Hive常见查询操作与函数汇总
目录 一.查询操作 1.基本查询(Like VS RLike) 2.Join语句 3.分组 4.排序 sort by 和 distribute by 6.分桶抽样 二.函数汇总 1.查询函数 行与列的 ...
- date类型_06076.1.0如何将ORC格式且使用了DATE类型的Hive表转为Parquet表
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图. Fayson的github: https://github.com/fayson/cdhproject 提示 ...
- hive 表的常用操作
使用load 方式加载数据到Hive 表中,注意分区表加载数据的特殊性 如何保存HiveQL 查询结果:保存到表中,保存到本地文件(注意指定列分隔符) 常见查询练习,如group by.having. ...
最新文章
- 空空排错日志:OCS错误日志14501等解决办法
- VBA【遍历每个工作表并将工作表表名赋予B2单元格】
- python学习--第三天 粗略介绍人脸识别
- 用计算机制作演示文稿教案博客,制作演示文稿 教学反思
- iBatis报java.lang.RuntimeException: Error setting property错误
- DeepMind哈萨比斯对话哈里王子:2018年AI最大的突破在生物或化学 2017-12-29 新智元 新智元报道 编辑:刘小芹 胡祥杰 【新智元导读】BBC 电台第四台连续第14年在
- 【网络协议】专题总结以及网络协议高频面试题汇总(8篇)
- python怎么反转单链表_单链表反转python实现代码示例
- 今天,开源中国出了一条广告史上最“正直”的广告
- Linux上用Jenkins执行shell
- .NET 6 中的七个 System.Text.Json 特性
- jquery获得指定元素坐标的方法
- 组件化开发_思维导图
- 人工智能TensorFlow工作笔记011---前向传播算法简介
- Java实现多线程的四种实现方式
- mysql试题百度云_MySQL数据库无完整备份删库,除了跑路还能怎么办?
- 《剑指offer》面试题5———从尾到头打印链表(C++ 实现)
- 4.FX Blue 本地跟单软件EA参数说明
- Elasticsearch高级(Shards、高可用集群搭建)
- 用计算机弹音乐我们一起猫叫,抖音上面我们一起学猫叫一起喵喵喵是什么歌 抖音学猫叫歌曲歌词...