Hive:日志,hql运行方式,Array,行列转换

日志

可以在终端通过 find / | grep hive-log4j2 命令查找Hive的日志配置文件

这些文件用于配置Hive的日志系统。它们不属于系统日志也不属于Job日志,而是用于配置Hive如何记录系统日志和Job日志, 可以通过hive-log4j2 查找日志的位置

HQL的3种运行方式

第1种就是linux终端, 第3种是通过第三方工具,比如DataGrip, 第3种方式用得比较多

  1. 在linux命令行中执行HQL

root@hadoop01 \~\] $ hive --database 数据库名 -e 'hql query' ![](https://i-blog.csdnimg.cn/direct/1318305ed94845db81247aa0bb047ec1.png) e--execute f--file s--silent i--init 示例 : 没有写数据库名称默认是从default数据库中查找 ![](https://i-blog.csdnimg.cn/direct/51326f464b1444bca2171809fe4019ca.png) ![](https://i-blog.csdnimg.cn/direct/fd1ff1022cf24a6aa8085e4723d56099.png) 2. beeline 连接 ![](https://i-blog.csdnimg.cn/direct/9df4b8c755f147c6a8595bd3331b0fc3.png) ### 复杂数据类型Array ![](https://i-blog.csdnimg.cn/direct/018dbf41a6ed445ab0cae3d938370955.png) 注意: 创建表时除了需要指定数组元素的分隔符, 否则所有的元素都会被当成一个元素 array里面元素的数据类型只能是基本数据类型,不能是另一种复杂类型 示例 ![](https://i-blog.csdnimg.cn/direct/bf285a9fa2524721b5f3d7fa86dec8ab.png) ![](https://i-blog.csdnimg.cn/direct/1ca7deff5db2465b828a5a0e58b710fd.png) 一个双引号是一个元素 ![](https://i-blog.csdnimg.cn/direct/742bc54078ce4514a5bc33c4f4c62a23.png) 访问数组的具体元素使用下标 ![](https://i-blog.csdnimg.cn/direct/9e20846f0d9f4e7d814257bc164bd711.png) size(数组名) 返回数组元素的个数 ![](https://i-blog.csdnimg.cn/direct/dc6250ddfec244f186caebb5d8a63281.png) ![](https://i-blog.csdnimg.cn/direct/5566091c281748a788fd087e3a1c11a1.png) 如果想查询每个人的总成绩, 因为王五只考了2门成绩, 所以出现了NULL, 需要对空值进行处理, 这需要知道每个数组的元素个数,比较麻烦 ![](https://i-blog.csdnimg.cn/direct/c54a4f544d8b4a04af3f05c622e70679.png) ![](https://i-blog.csdnimg.cn/direct/8ec1855ecbc6433d84ed6a6f57234a64.png) 把数组里面的元素展开,可以更方便地统计总成绩, 即行转列, 可以使用展开函数(也称爆炸函数) ![](https://i-blog.csdnimg.cn/direct/3ef0ab591ce94d87a9078fa3ce3555fb.png) ### **行转列: 展开函数explode和虚拟表lateral view** ![](https://i-blog.csdnimg.cn/direct/d68ccd2ced444bec8e67cf99c77bb9fe.png) UDTF是User-Defined Table-Generating Functions的缩写,即用户定义的表生成函数。 使用时select后面不能出现其他列 示例: 爆炸函数 ![](https://i-blog.csdnimg.cn/direct/27c641714b724bfeb67887d3dd90c1b7.png) ![](https://i-blog.csdnimg.cn/direct/056d07414c7e419da044548bb786aa2d.png) 示例: 虚拟表 lateral view explode(score) 虚拟表的表名是mytab 给表起个别名 cj 作为查询列 ![](https://i-blog.csdnimg.cn/direct/f05a13aa2294425cbf2905afc2455a5a.png) ![](https://i-blog.csdnimg.cn/direct/02cb8baf338e44debc5a91ddad244454.png) ![](https://i-blog.csdnimg.cn/direct/14f50a3a5a034b19aac99599eaeee1ce.png) ### 列转行 : collect_set和 collect_list 多变一 ![](https://i-blog.csdnimg.cn/direct/441e37e1ea8b40ca95ab0307c681866a.png)

相关推荐
程序员小羊!21 小时前
数仓数据基线,在不借助平台下要怎么做?
大数据·数据仓库
Hello.Reader1 天前
Flink SQL 的 LOAD MODULE 深度实战——加载 Hive 模块、理解模块发现与常见坑
hive·sql·flink
老徐电商数据笔记1 天前
技术复盘第二篇:电商数据主题域划分企业级实践
大数据·数据库·数据仓库·零售·教育电商·技术面试
亲亲菱纱1 天前
hive数仓分层
数据仓库
泰克教育官方账号1 天前
泰涨知识 | Hadoop的IO操作——压缩/解压缩
大数据·hadoop·分布式
老徐电商数据笔记1 天前
技术复盘第三篇:百果园新零售核心业务流程主题域划分详解
大数据·数据仓库·零售·技术面试
qq_381454991 天前
大数据时代的分布式基石Hadoop
hadoop
howard20052 天前
Hive实战任务 - 9.1 实现词频统计
hive·词频统计
colorknight2 天前
数据编织-异构数据存储的自动化治理
数据仓库·人工智能·数据治理·数据湖·数据科学·数据编织·自动化治理
满目山河•2 天前
二、复制三台虚拟机
hive·hadoop·hbase