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)函数相关推荐

  1. Hive Sql 大全(hive函数,hive表)

    Hive Sql 大全 本节基本涵盖了Hive日常使用的所有SQL,因为SQL太多,所以将SQL进行了如下分类: 一.DDL语句(数据定义语句): 对数据库的操作:包含创建.修改数据库 对数据表的操作 ...

  2. 用puthivestreaming把hdfs里的数据流到hive表

    全景图: 1. 创建hive表 CREATE TABLE IF NOT EXISTS newsinfo.test(name STRING ) CLUSTERED BY (name)INTO 3 BUC ...

  3. 大数据基础之Hive(四)—— 常用函数和压缩存储

    作者:duktig 博客:https://duktig.cn (文章首发) 优秀还努力.愿你付出甘之如饴,所得归于欢喜. 更多文章参看github知识库:https://github.com/dukt ...

  4. 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 ...

  5. R语言将dataframe长表转化为宽表实战:使用reshape函数、使用tidyr包的spread函数、使用data.table

    R语言将dataframe长表转化为宽表实战:使用reshape函数.使用tidyr包的spread函数.使用data.table 目录

  6. 理解Hive表(Hive Table)

    Hive表逻辑上有表的数据和相关的元数据组成.元数据描述表的结构,索引等信息.数据通常存放在HDFS中,虽然任意的Hadoop文件系统都能支持,例如Amazon的S3或者而本地文件系统.元数据则存在关 ...

  7. hadoop项目实战--ETL--(三)实现mysql表到HIVE表的全量导入与增量导入

    一 在HIVE中创建ETL数据库 ->create database etl; 二 在工程目录下新建MysqlToHive.py 和conf文件夹 在conf文件夹下新建如下文件,最后的工程目录 ...

  8. Hive常见查询操作与函数汇总

    目录 一.查询操作 1.基本查询(Like VS RLike) 2.Join语句 3.分组 4.排序 sort by 和 distribute by 6.分桶抽样 二.函数汇总 1.查询函数 行与列的 ...

  9. date类型_06076.1.0如何将ORC格式且使用了DATE类型的Hive表转为Parquet表

    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图. Fayson的github: https://github.com/fayson/cdhproject 提示 ...

  10. hive 表的常用操作

    使用load 方式加载数据到Hive 表中,注意分区表加载数据的特殊性 如何保存HiveQL 查询结果:保存到表中,保存到本地文件(注意指定列分隔符) 常见查询练习,如group by.having. ...

最新文章

  1. 空空排错日志:OCS错误日志14501等解决办法
  2. VBA【遍历每个工作表并将工作表表名赋予B2单元格】
  3. python学习--第三天 粗略介绍人脸识别
  4. 用计算机制作演示文稿教案博客,制作演示文稿 教学反思
  5. iBatis报java.lang.RuntimeException: Error setting property错误
  6. DeepMind哈萨比斯对话哈里王子:2018年AI最大的突破在生物或化学 2017-12-29 新智元 新智元报道 编辑:刘小芹 胡祥杰 【新智元导读】BBC 电台第四台连续第14年在
  7. 【网络协议】专题总结以及网络协议高频面试题汇总(8篇)
  8. python怎么反转单链表_单链表反转python实现代码示例
  9. 今天,开源中国出了一条广告史上最“正直”的广告
  10. Linux上用Jenkins执行shell
  11. .NET 6 中的七个 System.Text.Json 特性
  12. jquery获得指定元素坐标的方法
  13. 组件化开发_思维导图
  14. 人工智能TensorFlow工作笔记011---前向传播算法简介
  15. Java实现多线程的四种实现方式
  16. mysql试题百度云_MySQL数据库无完整备份删库,除了跑路还能怎么办?
  17. 《剑指offer》面试题5———从尾到头打印链表(C++ 实现)
  18. 4.FX Blue 本地跟单软件EA参数说明
  19. Elasticsearch高级(Shards、高可用集群搭建)
  20. 用计算机弹音乐我们一起猫叫,抖音上面我们一起学猫叫一起喵喵喵是什么歌 抖音学猫叫歌曲歌词...

热门文章

  1. 微软技术沙龙 思考 体验 真正的中国网络技术
  2. Ubuntu下安装NetBeans步骤和相关问题的解决方法
  3. 职称考试计算机怎么学容易,计算机职称考试备考的六个关键点
  4. 手机版php7怎么安装,Centos7 安装 PHP7最新版的详细教程
  5. Linux下的文件共享全攻略系列之二:NFS快速配置教程与安全策略
  6. web网站服务(二)-1
  7. JVM 内存预警排查
  8. 公司软件架构设计的现状分析 第二弹
  9. Android第十二期 - NavigationDrawer侧边栏滑动效果左右可控制
  10. (面试题)html中创建模态窗口的方法有哪些?