Apache Hive的基本使用语法(二)

Hive SQL操作

7、修改表

  • 表重命名
alter table score4 rename to score5;
  • 修改表属性值
# 修改内外表属性
ALTER TABLE table_name SET TBLPROPERTIES("EXTERNAL"="TRUE");
# 修改表注释
ALTER TABLE table_name SET TBLPROPERTIES ('comment' = new_comment);
  • 其余属性可参见
    点此官网链接查看
  • 添加分区
ALTER TABLE tablename  ADD PARTITION (month='201101');
  • 修改分区值
ALTER TABLE tablename PARTITION (month='202005') RENAME TO PARTITION (month='201105');
  • 删除分区
ALTER TABLE tablename DROP PARTITION (month='201105');
  • 添加列
ALTER TABLE table_name ADD COLUMNS (v1 int, v2 string);
  • 修改列名
ALTER TABLE test_change CHANGE v1 v1new INT;
  • 清空表(只可以清空内部表)
TRUNCATE TABLE tablename;
  • 删除表
DROP TABLE tablename;

8、数组类型(array)

  • 如下数据文件,有2个列,locations列包含多个城市:
    说明:name与locations之间制表符分隔,locations中元素之间逗号分隔
    在这里插入图片描述
    可以使用array数组类型,存储locations的数据
    建表语句:
create table myhive.test_array(name string, work_locations array<string>)
row format delimited fields terminated by '\t'
COLLECTION ITEMS TERMINATED BY ',';

在这里插入图片描述

  • 常用查询语句
# 查询所有数据
select * from myhive.test_array;
# 查询loction数组中第一个元素
select name, work_locations[0] location from myhive.test_array;
# 查询location数组中元素的个数
select name, size(work_locations) location from myhive.test_array;
# 查询location数组中包含tianjin的信息
select * from myhive.test_array where array_contains(work_locations,'tianjin');

9、映射类型(map)

  • map类型其实就是简单的指代:Key-Value型数据格式。 有如下数据文件,其中members字段是key-value型数据
    字段与字段分隔符: “,”;需要map字段之间的分隔符:“#”;map内部k-v分隔符:“:”
    在这里插入图片描述
  • 建表语句
create table myhive.test_map(
id int, name string, members map<string,string>, age int
)
row format delimited
fields terminated by ','
COLLECTION ITEMS TERMINATED BY '#' 
MAP KEYS TERMINATED BY ':';

在这里插入图片描述

  • 常用查询语句
# 查询全部
select * from myhive.test_map;
# 查询father、mother这两个map的key
select id, name, members['father'] father, members['mother'] mother, age from myhive.test_map;
# 查询全部map的key,使用map_keys函数,结果是array类型
select id, name, map_keys(members) as relation from myhive.test_map;
# 查询全部map的value,使用map_values函数,结果是array类型
select id, name, map_values(members) as relation from myhive.test_map;
# 查询map类型的KV对数量
select id,name,size(members) num from myhive.test_map;
# 查询map的key中有brother的数据
select * from myhive.test_map where array_contains(map_keys(members), 'brother');

10、结构类型(struct)

  • struct类型是一个复合类型,可以在一个列中存入多个子列,每个子列允许设置类型和名称
    有如下数据文件,说明:字段之间#分割,struct之间冒号分割
    在这里插入图片描述
  • 建表语句
create table myhive.test_struct(
id string, info struct<name:string, age:int>
)
row format delimited
fields terminated by '#'
COLLECTION ITEMS TERMINATED BY ':';
  • 常用查询
select * from hive_struct;
# 直接使用列名.子列名 即可从struct中取出子列查询
select ip, info.name from hive_struct;

11、数据查询

  • 查询语句基本语法如下(跟普通数据库sql查询基本一样):
    SELECT [ALL | DISTINCT]select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BYcol_list] [HAVING where_condition] [ORDER BYcol_list] [CLUSTER BYcol_list | [DISTRIBUTE BY col_list] [SORT BY col_list] ] [LIMIT number]
# 排序查询
SELECT * FROM orders WHERE useraddress like '%广东%' ORDER BY totalmoney DESC LIMIT 1;
# 分组查询
SELECT userid, AVG(totalmoney) AS avg_money FROM itheima.orders GROUP BY userid HAVING avg_money > 10000;
# Join连接查询
SELECT o.orderid, o.userid, u.username, o.totalmoney, o.useraddress, o.paytime FROM itheima.orders o LEFT JOIN itheima.users u ON o.userid = u.userid;
# RLIKE查询(支持正则)
SELECT * FROM itheima.orders WHERE useraddress RLIKE '.*广东.*';
SELECT * FROM itheima.orders WHERE userphone  RLIKEE '188\\S{4}0\\S{3}';
# UNION查询
SELECT t_id FROM itheima.course WHERE t_id = '周杰轮'UNION ALLSELECT t_id FROM itheima.course WHERE t_id = '王力鸿'

12、数据抽样

  • 基于随机分桶抽样语法:
    SELECT ... FROM tbl TABLESAMPLE(BUCKET x OUT OF y ON(colname | rand()))
SELECT * FROM orders TABLESAMPLE(BUCKET 1 OUT OF 10 ON rand());
  • 基于数据块抽样语法(每一次抽样的结果都一致):
    SELECT ... FROM tbl TABLESAMPLE(num ROWS | num PERCENT | num(K|M|G));
  1. num ROWS 表示抽样num条数据
  2. num PERCENT 表示抽样num百分百比例的数据
  3. num(K|M|G) 表示抽取num大小的数据,单位可以是K、M、G表示KB、MB、GB
SELECT * FROM orders TABLESAMPLE(num rows);

13、虚拟列

  • 虚拟列是Hive内置的可以在查询语句中使用的特殊标记,可以查询数据本身的详细参数。
  • Hive目前可用3个虚拟列:
  1. INPUT__FILE__NAME,显示数据行所在的具体文件
  2. BLOCK__OFFSET__INSIDE__FILE,显示数据行所在文件的偏移量
  3. ROW__OFFSET__INSIDE__BLOCK,显示数据所在HDFS块的偏移量
    注:此虚拟列需要设置:SET hive.exec.rowoffset=true 才可使用
SELECT *, INPUT__FILE__NAME, BLOCK__OFFSET__INSIDE__FILE, ROW__OFFSET__INSIDE__BLOCK FROM course;

Hive函数

  • Hive的函数分为两大类:内置函数(Built-in Functions)、用户定义函数UDF(User-Defined Functions):
    在这里插入图片描述
    Hive函数官方文档,点此查看
  • Hive内置函数(举例说明)
# 查看当下可用的所有函数
show functions
# 查看函数的使用方式
describe function extended funcname
  • 数学函数
# 取整函数: round  返回double类型的整数值部分 (遵循四舍五入)
select round(3.1415926);
# 指定精度取整函数: round(double a, int d) 返回指定精度d的double类型
select round(3.1415926,4);
# 取随机数函数: rand 每次执行都不一样 返回一个0到1范围内的随机数
select rand();
# 指定种子取随机数函数: rand(int seed) 得到一个稳定的随机数序列
select rand(3);
# 求数字的绝对值
select abs(-3);
# 得到pi值(小数点后15位精度)
select pi();
  • 集合函数
    在这里插入图片描述
  • 类型转换函数
    在这里插入图片描述
  • 日期函数
    在这里插入图片描述
  • 条件函数
    在这里插入图片描述
  • 数据脱敏函数
    在这里插入图片描述
  • 字符串函数
    在这里插入图片描述
  • 其他函数
    在这里插入图片描述
    至此,Apache Hive的基本使用语法分享结束!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/575517.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat配置https

前言&#xff1a;本文内容为实操记录&#xff0c;仅供参考&#xff01; 一、证书 CA证书申请下载不赘述了。 二、上传证书 进入tomcat根目录&#xff0c;conf同级目录下创建cert文件夹&#xff0c;并将证书两个文件上传到该文件夹&#xff1b; 三、编辑conf/server.xml文件 ① …

20221124 kafka实时数据写入Redis

一、上线结论 实现了将用户线上实时浏览的沉浸式视频信息&#xff0c;保存在Redis中这样一个功能。为实现沉浸式视频离线推荐到实时推荐提供了强有力的支持。目前只是应用在沉浸式场景&#xff0c;后续也能扩展到其他所有场景。用于两个场景&#xff1a;&#xff08;1&#xf…

WPF自定义Panel:让拖拽变得更简单

在 WPF 应用程序中&#xff0c;拖放操作是实现用户交互的重要组成部分。通过拖放操作&#xff0c;用户可以轻松地将数据从一个位置移动到另一个位置&#xff0c;或者将控件从一个容器移动到另一个容器。然而&#xff0c;WPF 中默认的拖放操作可能并不是那么好用。为了解决这个问…

Vue中v-for多个Echarts图表组件只渲染一个要素问题排查

这个系列主要是用于记录我日常工作中遇到的一些Bug,既属于知识分享&#xff0c;也是对学习习惯的维持… 问题描述 今天&#xff0c;在开发一个WebGIS大屏项目时&#xff0c;我遇到了多个三维Echarts饼图图表渲染的问题&#xff0c;因为相似图表很多&#xff0c;我决定将Echart图…

Unity3d使用Jenkins自动化打包(Windows)(二)

文章目录 前言一、Unity工程准备二、Unity调取命令行实战一实战二实战三实战四实战五 总结 前言 自动化打包的价值在于让程序员更轻松地创建和管理构建工具链&#xff0c;提高编程效率&#xff0c;将繁杂的工作碎片化&#xff0c;变成人人&#xff08;游戏行业特指策划&#x…

CDH集群hive初始化元数据库失败

oracle数据库操作&#xff1a; 报错如下&#xff1a;命令 (Validate Hive Metastore schema (237)) 已失败 截图如下&#xff1a; 后台日志部分摘录&#xff1a; WARNING: Use “yarn jar” to launch YARN applications. SLF4J: Class path contains multiple SLF4J binding…

tdesign坑之EnhancedTable树形结构默认展开所有行

⚠️在官方实例中&#xff0c;树形结构的表格提供了2种方法控制展开全部节点&#xff1a; 一是通过配置属性tree.defaultExpandAll为true代表默认展开全部节点&#xff08;仅默认情况有效&#xff09;&#xff1b; 二是使用组件实例方法expandAll()可以自由控制树形结构的展开…

VESTA模拟计算XRD标准卡片

先上Crystallography Open Database网站下载标准CIF卡片&#xff08;以PbI2为例&#xff09; 1.直接进网站搜元素就行 2.点CIF直接下载 3.打开VESTA&#xff0c;导入刚刚下载的CIF 4.导入成功就是这样的 5.按照我这个操作来计算 6.点Calculation 7.已经计算出来了&#xff…

Jmeter参数化 —— 循环断言多方法

1、参数化接口测试数据 注意&#xff1a;csv文档参数化&#xff0c;里面有多少条数据&#xff0c;就要在线程组里循环多少次&#xff0c;不然就只执行一次 2、添加配置元件-计数器 关于计数器&#xff1a; ①Starting Value&#xff1a;给定计数器的初始值; ②递增&#xff1a…

计算机专业学习单片机有什么意义吗?

玩单片机跟玩计算机区别还是很大的, 单片机有众多的种类,每一种又可能有很多个系列.可以说单片机就是为了专款专用而生的.这样来达到产品成本的降低,这就是现在身边的很多的电子产品价格一降再降的原因之一.在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一…

Eclipse+Java+Swing实现斗地主游戏

一. 视频演示效果 java斗地主源码演示 ​ 二.项目结构 代码十分简洁&#xff0c;只有简单的7个类&#xff0c;实现了人机对战 素材为若干的gif图片 三.项目实现 启动类为Main类&#xff0c;继承之JFrame&#xff0c;JFrame 是 Java Swing 库中的一个类&#xff0c;用于创建窗…

腾讯云4核8G服务器多少钱?12M带宽646元15个月,买1年送3月

2024年腾讯云4核8G服务器租用优惠价格&#xff1a;轻量应用服务器4核8G12M带宽646元15个月&#xff0c;CVM云服务器S5实例优惠价格1437.24元买一年送3个月&#xff0c;腾讯云4核8G服务器活动页面 txybk.com/go/txy 活动链接打开如下图&#xff1a; 腾讯云4核8G服务器优惠价格 轻…