Apache Hive 使用

news/2024/11/22 15:41:02/

Apache Hive 使用

    • 使用beeline 连接Apache Hive
    • 查看数据库
    • 使用或进入数据库
    • 创建表
    • 查看数据表
    • 上传数据
    • 数据操纵语言(DML)
      • 查询语句
    • 函数
    • 数学函数
      • 条件函数

请添加图片描述
)

使用beeline 连接Apache Hive

/export/server/apache-hive-3.1.2-bin/bin/beelinebeeline> ! connect jdbc:hive2://node1:10000 # 【jdbc:hive2://node1:10000】是自己的地址
beeline> root # 输入账号
beeline> password # 输入密码,点击回车

查看数据库

show databases;
或者
show schemas;

使用或进入数据库

use 数据库名称;

创建表

create tabele 表名 (字段名1,数据类型,字段名2,数据类型,……)
row format delimited
fields terminated by "分割符号";

查看数据表

show databases [in 数据库名称];
[in 数据库名称] 指定查看某个数据的中的数据表
desc formatted 数据表名 ; 查询表的元数据

上传数据

load data [local] inpath '数据文件的位置' [overwrite] into table '数据表名称';

从本地上传数据(示例)

(从本地上上传并不是客户端所在的位置是服务器所在的位置)

LOAD DATA LOCAL INPATH '/root/hivedata/students.txt' INTO TABLE student_local;

从HDFS中移动到表(示例):

LOAD DATA INPATH '/students.txt' INTO TABLE student_HDFS;

数据操纵语言(DML)

查询语句

--all:返回所有的行
select all state from covid_2019_usa;
-- distinct: 对数据去重后再返回
select distinct state from covid_2019_usa;
-- 出现返回时对两个自动共同去重
select distinct cases,state from covid_2019_usa;
-- 当where返回的值true时返回数据
select * from covid_2019_usa where 1=1;
-- 当where返回的值为false时不反悔任何数据
select * from covid_2019_usa where 1>2;
-- where 参数可以搭配函数使用,但是不支持聚合函数
select * from covid_2019_usa where length(state) >10;
-- where 可以搭配逻辑运算和比较运算使用
select state from covid_2019_usa where fips > 42000; -- 查询数据大于42000的城市
select state from covid_2019_usa where fips > 42000 and deaths > 100; --查询fips大于42000   并且  deaths> 100的城市
select state from covid_2019_usa where fips > 42000 or deaths > 100;-- 查询fips大于42000  或者  deaths> 100的城市

where搭配特殊条件使用

select * from covid_2019_usa where state is  null; -- 查询表中state为null的数据
select * from covid_2019_usa where state is not null; -- 查询表中state不为null的数据
select * from covid_2019_usa where fips between 1550 and 55555; -- 查询表中fips 1550到55555的数据
select * from covid_2019_usa where fips in (1500 ,100); -- 查询表中fips是1500和100的数据

– 聚合函数(函数的使用方法一致所以不再一一举例)

select count(state) from covid_2019_usa; -- 表中state有多少行-- group by语法(在group by 中所展示的字段要么是分组字段要么是聚合函数应用的字段,要不然会报错)
select state,count(countiy) from covid_2019_usa group by state;
-- 错误写法:org.apache.hadoop.hive.ql.parse.SemanticException:Line 1:7 Expression not in GROUP BY key 'fips'
select fips,state,count(countiy) from covid_2019_usa group by state;

– having筛选 as 是给字段起一个别名
– where 和 having 的区别:
– having是在分组后对数据进行过滤
– where是在分组前对数据进行过滤
– having后面可以使用聚合函数
– where后面不可以使用聚合函数

select state,sum(deaths) as sum_deaths from covid_2019_usa where count_time ="2021-01-28" group by state having sum_deaths > 10000;

– order by
– 对指定列数据进行排序

select state,sum(deaths) as sum_deaths from covid_2019_usa where count_time ="2021-01-28" group by state having sum_deaths > 10000 order by sum_deaths;

– limit 对返回的数据进行限制 (第一个参数是从第几行开始,第二个参数是显示几行)

select * from covid_2019_usa limit 2,5;

– 第一个参数据的是从0开始也就是0行才是真正意义上的第一行
– hive dml命令的执行顺序
– from > where > group(包含聚合) > having > order >select > limit和order by ;

– join 关联查询语法

select * from employee;

– 内连接 所取的数据必须是id都有的也就是交集
– inner join

select e.id,e.name,e2.city from employee e  inner join employee_address e2 on e.id = e2.id;

– 等价连接

select e.id,e.name,e2.city from employee e join employee_address e2  on e.id = e2.id;

– 隐式连接表示法

select e.id,e.name,e_a.city from employee e ,employee_address e_a where e.id = e_a.id;

– 左连接
– left join

select e.id,e.name,e_2.city from employee e left join employee_address e_2 on e.id = e_2.id ;

– 等价连接

select e.id,e.name,e2.city  from employee e left outer join employee_address e2 on e.id=e2.id;

函数

– 查看函数

show functions ;
describe function extended count;

– 函数分类

– 分为内置函数和用户自定义函数
– 用户自定义输出的udf分类标准
– 根据函数的输入输出的行数:
– UDF- 一进一出
– UDAF- 聚合函数,多进一出
– UDTF - 表生成函数,一进多出

– 内置函数
– 字符串函数

SELECT length('yujinlong'); -- 字符串长度
select reverse('yujinlong'); --倒置字符串
select concat('yu','jinlong'); --拼接

– 带分割符号的连接符(第一个参数是分割符号,后面是连接内容)

select concat_ws('.','www',array('itcast','com'));

– 字符串截取

select substr('yujinlong',-2);--索引从1开始,如果为负数则倒着数
select substr('yujinlong',2,2); -- 取两位

– 分割字符串
– 根据自定义的符号进行切割

select split('apache hive',' ');

– 日期函数
– 获取当前日期

select current_date();

–获取当前时间戳

select unix_timestamp();

– 按照日期转化时间戳

select unix_timestamp("2023-12-07 13:01:03");

– 按照指定格式转化时间戳函数

select unix_timestamp('20230108 13:20:20','yyyyMMdd HH:mm:ss');

– unix转化时间戳

select from_unixtime(1673184020);
select from_unixtime(0,"yyyy-MM-dd HH:mm:ss");

– 日期比较函数

select datediff('2012-12-08','2012-05-09');

– 增加日期函数

select date_add('2012-02-28',10);

– 日期减少函数

select date_sub('2012-02-28',10);

数学函数

– 取整函数

select round(3.1415926); --遵循四舍五入
select round(3.1415926); --可以指定精准度

– 取随机数

select rand();

– 设定种子,得到一个稳定的随机数序列

select rand(3);

条件函数

select * from t_students limit 3;

– if 判断

select if(sex='男','m','w') from students.t_students limit 3;

– 空置转化

select nvl('yu','yyyyy');
select nvl(null,'qqqq');

– 条件转化函数

select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end ;
select case sex when '男' then 'm' when '女' then 'w' end from t_students;

愿君前程似锦,未来可期去💯,感谢您的阅读,如果对您有用希望您留下宝贵的点赞和收藏
本文章为本人学习笔记,学习网站为黑马程序员的Hadoop可以一起学习共同进步谢谢,如有请侵权联系,本人会立即删除侵权文章。可以一起学习共同进步谢谢,如有请侵权联系,本人会立即删除侵权文章。


http://www.ppmy.cn/news/10475.html

相关文章

23届秋招,寒气逼人。。

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/T…

Spring事务和事务传播机制

⭐️前言⭐️ 事务是作为一名后端程序员,必须去要了解清楚的东西,因为它决定了程序的正常运行以及与程序运行效率之间的权衡,这篇文章我们就来了解一下Spring事务和事务传播机制。 🍉欢迎点赞 👍 收藏 ⭐留言评论 &am…

性能优化(应用程序、cpu)

自己在极客时间课程、工作经验、技术博客的总结。 基本知识 时间量级 延时: 发生一次操作的时间均值 相对时间: 已一个cpu周期为1s的参照物,进行等比放大 事件延时相对时间比例1个CPU周期0.3ns1sL1缓存访问0.9ns3sL2缓存访问2.8ns9s互斥加锁10ns30sL3缓存访问12.9ns43s主…

C++模拟实现优先级队列(priority_queue)

目录 一、 仿函数 1.1仿函数的概念使用 1.2模拟实现仿函数 二、优先级队列(priority_queue) 2.1 优先级队列概念 2.2 优先级队列使用 2.3 模拟实现优先级队列 2.3.1 优先级队列类框架 2.3.2 模板参数 2.3.3 构造函数 2.3.4 仿函数 2.3.5 adjust_up (堆向…

C语言基础 — ( 变量的存储方式、生存期、内存机制 )

欢迎小伙伴的点评✨✨ 本篇章系列是对C语言的深度思考和总结、关于C语言内容会持续更新 文章目录前言一、局部变量和全局变量1.1、局部变量1.2、全局变量二、变量的存储方式和生存期2.1、动态存储方式与静态存储方式2.2、局部变量的存储类别2.3、全局变量的存储类别三、存储类别…

Mask RCNN网络源码解读(Ⅰ) --- 语义分割前言与转置卷积

目录 1.什么是语义分割 2.语义分割常见的数据集格式 3.常见的语义分割评价指标 4.转置卷积 1.什么是语义分割 常见分割任务:语义分割、实例分割、全景分割 图一 原始图片图二 语义分割图三 实例分割语义分割(例如FCN网络)可以理解为一个…

长宁区科技小巨人培育企业奖励50万元/家

长宁区科技小巨人培育企业一、主管部门长宁区科学技术委员会二、政策依据《长宁区鼓励科技创新政策的实施办法》(长科委规〔2020〕1 号)《关于组织开展长宁区2022年度科技小巨人培育企业项目申报的通知》《长宁区2022年科技小巨人培育企业项目申报指南》…

Nginx配置负载均衡到网关

Nginx配置负载均衡到网关 1.需求图示 前置准备工作 https://blog.csdn.net/qq_44981526/article/details/128599898 2.配置实现 1.在C:\Windows\System32\drivers\etc目录下修改hosts文件 #配置llpliving.com nginx虚拟机 192.168.56.100 www.llpliving.com2.配置nginx负载…