学习大数据DAY39 基于 hive 的 SQL语句

news2024/9/23 19:21:46

目录

hive 介绍以及应用

上机练习


hive 介绍以及应用

--查看数据库
show
database db_hive
--过滤查看数据库
show databases like 'db_hive*';
--查看详情
desc database db_hive
desc database extended db_hive;
--查看表
show tables;
--查看表列详情
desc dept;
--查看表所有详细信息
desc extended emp;
show formatted emp;
--查看分区信息
show partitions emp;
-- 创建数据库
CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name --内部表
[(col_name data_type [COMMENT col_comment], ...)] --数据类型
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] --
分区表
[CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] --
分桶表
[ROW FORMAT DELIMITED --数据格式
[FIELDS TERMINATED BY char] --列分隔
[COLLECTION ITEMS TERMINATED BY char] --复合数据 item 分隔
[MAP KEYS TERMINATED BY char] --复合数据 key 分隔
[LINES TERMINATED BY char]] --行分隔
[STORED AS file_format] --压缩格式
[LOCATION hdfs_path] --表数据文件存储路径
[TBLPROPERTIES (property_name=property_value, ...)] --内外部表转换
[AS select_statement]
--load
load data [local] inpath '数据的 path' [overwrite] into table student
[partition (partcol1=val1,…)];
--上传 hdfs
dfs -put /opt/module/hive/datas/student.txt /user/atguigu/hive;
--插入数据
insert into table student_par values(1,'wangwu'),(2,'zhaoliu');
--覆盖插入并且使用结果集进行插入
insert overwrite table student_par select id, name from student ;
insert overwrite local directory '数据的 path'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' dql_command;
--hadoop 导出
dfs -get /user/hive/warehouse/student/student.txt
/opt/module/datas/export/student3.txt;
--hive shell 导出
bin/hive -e 'select * from default.student;' >
/opt/module/hive/datas/export/student4.txt;
--export 导出
export table default.student to
'/user/hive/warehouse/export/student';
SELECT [ALL | DISTINCT] select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[ORDER BY col_list]
[CLUSTER BY col_list
| [DISTRIBUTE BY col_list] [SORT BY col_list]
]
[LIMIT number]

上机练习

1 student2 建表
1.1 数据清洗 1.2 数据导入
student2.txt 内容
Shell 脚本清洗:
sed 's/{//g' /root/student2.txt \
| sed 's/"//g' \
| sed 's/://g' \
| sed 's/name//g' \
| sed 's/id//g' \
| sed 's/age//g' \
| sed 's/score//g' \
| sed 's/语文//g' \
| sed 's/数学//g' \
| sed 's/英语//g' \
| sed 's/sex//g' \
| sed 's/|/,/g' \
| sed 's/}//g' \
| sed 's/ //g' \
| sed 's/class_//g' > /root/student2new.txt
hive 导入数据:
create table if not exists students2
(
name varchar(5),
id bigint,
class_name varchar(10),
age int,
语文 tinyint,
数学 tinyint,
英语 tinyint,
constraint score unique(语文,数学,英语),
sex varchar(1)
)
row format delimitedfields terminated by ','
lines terminated by '\n'
location '/emp/'
2.student2 指标计算
2.1 统计各班 语文平均分,数学平均分,英语平均分 语文最高分,英语最高分,
数学最高分,
select class_name,avg(语文) as 语文平均分,avg(数学) as 数学平均分,avg(英语)
as 英语平均分,
max(语文) as 语文最高分,max(数学) as 数学最高分,max(英语) as 英语最高分
from students2
group by class_name2.2 统计各班男生语文最高分,男生数学最高分,男生英语最高分, 女生语文最
高分, 女生数学最高分, 女生英语最高分
select class_name,sex,
avg(语文) as 语文平均分,avg(数学) as 数学平均分,avg(英语) as 英语平均分,
max(语文) as 语文最高分,max(数学) as 数学最高分,max(英语) as 英语最高分
from students2
group by class_name,sex
2.2 统计各班男生语文最高分,男生数学最高分,男生英语最高分, 女生语文最
高分, 女生数学最高分, 女生英语最高分
select class_name,sex,
avg(语文) as 语文平均分,avg(数学) as 数学平均分,avg(英语) as 英语平均分,
max(语文) as 语文最高分,max(数学) as 数学最高分,max(英语) as 英语最高分
from students2
group by class_name,sex

2.3 统计每人平均分,总分,三科中的最高分,最高分科目名称,在本班的总分排
名(有并列),判断是否在平均分线以上
--存储总分平均分
drop table if EXISTS 总分平均分;create table if not exists 总分平均分
(
score float
);
insert into 总分平均分
select avg(语文+数学+英语) from
students2;
select name,class_name,(语文+数学+英语)/3 as 三科平均分,(语文+
数学+英语) as 总分,
case when 语文>=数学 and 语文>=英语 then
'语文'
when 数学>=语文 and 数学>=英语 then
'数学'
when 英语>=数学 and 英语>=语文 then
'英语'
end as 三科最高分的科目,
case when 语文>=数学 and 语文>=英语 then 语文
when 数学>=语文 and 数学>=英语 then 数学
when 英语>=数学 and 英语>=语文 then 英语
end as 三科最高分,
rank()over(partition by class_name order by (语文+数学+英语)
desc ) as 总分在本班的排名,
case when (语文+数学+英语) >= (select score from 总分平均分) then
'是'
when (语文+数学+英语)<(select score from 总分平均分) then
'否'
end as 是否在平均分线以上
from students2
order by (语文+数学+英语) desc;2.4 统计每个学生总分并降序排序 ,显示本人总分和上一个学生分数的差值
select name,语文+数学+英语 as 总分,
case when (lag(语文+数学+英语,1,0)over(order by 语文+数学+英语
desc)-(语文+数学+英语))<0 then
'无'
else lag(语文+数学+英语,1,0)over(order by 语文+数学+英语
desc)-(语文+数学+英语)
end as 与上一个学生分数的差值
from students2
order by 语文+数学+英语 desc
2.4 统计每个学生总分并降序排序 ,显示本人总分和上一个学生分数的差值
select name,语文+数学+英语 as 总分,
case when (lag(语文+数学+英语,1,0)over(order by 语文+数学+英语
desc)-(语文+数学+英语))<0 then
'无'
else lag(语文+数学+英语,1,0)over(order by 语文+数学+英语
desc)-(语文+数学+英语)
end as 与上一个学生分数的差值
from students2
order by 语文+数学+英语 desc

才想起来hive不支持中文表明和列名,我坦白我是用达梦写的。因为我电脑内存只有8G不敢开hadoop,一开就很卡,内存占用高达99%。(下周我会换内存卡)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小学二年级数学精选试题

小学二年级数学精选试题

leetcode 089 打家劫舍

leetcode 089 打家劫舍 题目 一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响小偷偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定…

【计算机网络】网络版本计算器

此前我们关于TCP协议一直写的都是直接recv或者read&#xff0c;有了字节流的概念后&#xff0c;我们知道这样直接读可能会出错&#xff0c;所以我们如何进行分割完整报文&#xff1f;这就需要报头来解决了&#xff01; 但当前我们先不谈这个话题&#xff0c;先从头开始。 将会…

GlobalMapper-大疆的航点kmz转航线文件展示空间轨迹

0序&#xff1a; 在大疆遥控器或者司空2中设置航线&#xff0c;都是一个个的航点&#xff0c;如果把航点转为航线&#xff0c;在三维地球中显示其空间效果。用于分析和实际物体的距离&#xff0c;或者展示该航线都做了哪些方面的考虑。 如何把一堆点连城一条线&#xff1f; 本…

进程相关命令和函数

查询进程相关命令 ps aux 查看进程相关信息 1.就绪态、运行态 R 2.睡眠态、等待态 可唤醒等待态 S 不可唤醒等待态 D 3.停止态 T 4.僵尸态 Z 5.结束态 top 根据CPU占用率查看进程相关信息 kill 和killall kill和killall发送一个信号 kill -2 PID 15 发送信号PID对应的进程&…

又一实锤 美元丧钟敲响

文&#xff5c;琥珀食酒社 作者 | 积溪 咱们又要见证历史了 之前我说美元霸权快终结了 没想到马上又来了一个实锤 就在刚刚 “159个国家将采用金砖国家新支付系统“的消息 冲上热搜 据大毛媒体爆料 这个新支付系统 将在今年10月份上线 替代现有的swift系统 这是要挖…

nginx的详细介绍及配置

Nginx&#xff08;发音为“engine X”&#xff09;是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP代理服务器。Nginx以其稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。它最初由俄罗斯人Igor Sysoev编写&#xff0c;并于2004年首次公开发布。N…

解决旧版CMS内容管理无法登录的问题

最近遇到了输入正确的账户密码&#xff0c;旧版的CMS内容管理的平台提示登录成功却无法跳转的问题 遇到这种情况请不要慌&#xff01;&#xff01;&#xff01; 请按照下面的步骤解决问题&#xff1a; 1.点击账号管理 2.点击右上角的返回旧版控制台 3.点击cloud1环境 4.点击扩…

财务会计与管理会计(十一)

文章目录 快速切换日记账余额SUMPRODUCT、LOOKUP函数应用 销售业绩分段统计表SUMPRODUCT函数的应用 自动打印发票签收单VLOOKUP函数的应用 快速切换日记账余额 SUMPRODUCT、LOOKUP函数应用 C2SUMPRODUCT((A5:A100B2)*C5:C100) D2SUMPRODUCT((A5:A100B2)*D5:D100) E4公式1&…

javaweb学习之HTML(一)

推荐学习使用网站 w3school 在线教程 认识HTML HTML&#xff08;HyperText Markup Language&#xff09;是超文本标记语言&#xff0c;它是一个用于创建网页和网页应用程序的标准标记语言。HTML文档由一系列的元素&#xff08;elements&#xff09;组成&#xff0c;这些元素通…

大模型日报|10 篇必读的大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.斯坦福推出大模型网络安全能力和风险评估框架 Cybench 用于网络安全的语言模型智能体&#xff08;agent&#xff09;能够自主识别漏洞并执行漏洞利用&#xff0c;有可能对现实世界造成影响。政策制定者、模型提供者…

海外媒体投稿:怎样在法国媒体发稿宣传中获得成功

法国是一个充满机遇的销售市场&#xff0c;而媒体发稿营销推广是企业在法国市场里扩张曝光度和提升知名度的有效途径。下面我们就共享如何运用低投资得到高收益的办法&#xff0c;帮助企业在法国媒体发稿推广过程中获得成功。 第一步&#xff1a;掌握目标群体在进行法国媒体发稿…

HCIP-交换实验

根据实验要求&#xff0c;完成实验内容&#xff1a; 实验拓扑图如下所示 &#xff1a; 搭建拓补图&#xff1a; LSW1&#xff0c;LSW2&#xff1a; [LS1]interface Eth-Trunk 0 [LS1-Eth-Trunk0]q [LS1]interface g0/0/3 [LS1-GigabitEthernet0/0/3]eth-trunk 0 [LS1]interf…

微信支付商家转账到零钱申请必过方案总结

商家在申请商家转账到零钱时总会遇到各种原因的驳回&#xff0c;不少商家不断的修改又产生新的驳回原因从而导致工期无限延长&#xff0c;本文根据我们上万次成功申请商家转账到零钱的经验整理&#xff0c;帮助商家可以快速过审&#xff1a; 准备工作和注意事项 - 确认主体资格…

mq-fanout交换机

交换机 交换机是什么?步骤 交换机本身具备路由功能 消息先发到交换机,交换机在路由到队列,消费者监听队列拿到消息 广播模式是什么 是什么 例如:每个微服务创建队列,订单服务只启动1台,1个消费者,订单 怎么创建 创建一个队列 -交换机里type-选择模式(广播模式) 在交换…

AMD为何花49亿美元收购ZT Systems?

是的&#xff0c;是不是很震惊&#xff01; 苏妈再次出手&#xff0c;在美国当地时间8月19日&#xff0c;AMD同意用价值49亿美元的现金和股票收购ZT Systems——这笔费用超过了AMD 2024年预期在数据中心GPU销售总额。 从收购的金额我们就能看出这笔收购的重要性。 但为什么AM…

NGINX常用指令及其防盗链

目录 1 NGINX的指令及其应用 1.1 if指令 1.2 set 指令 - 实现变量定义 1.3 break 指令 1.4 return 指令 1.5 rewrite 指令 1.5.1 Nginx rewrite 介绍 1.5.2 Nginx rewrite 语法 1.5.3 rewrite 指令结尾的 flag 标记说明 2 域名永久与临时重定向 2.1 永久重定向301 2.2 临时重…

同行聚势,喆啡酒店11周年熠熠生辉

当下酒店与消费者之间已超越传统服务关系&#xff0c;在旅途中彼此相伴&#xff0c;相互支持&#xff0c;并肩前行&#xff0c;喆啡酒店作为生活方式酒店的标杆品牌&#xff0c;超百万忠诚消费者正是其品牌旅伴。十一年发展旅程&#xff0c;喆啡酒店携手万千消费者&#xff0c;…

Mantel Test分析与绘图

目录 1.前言 2.步骤 3.在R语言中&#xff0c;除了mantel_test函数&#xff0c;还有其他几个工具和方法可以用于进行Mantel Test分析&#xff1a; 4.利用ggcor包在进行Mantel Test分析 5.使用ggcor包进行Mantel Test分析 6.两个距离矩阵的行名和列名不完全相同的处理方法 …

一个BUG搞懂ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal

首发公众号&#xff1a;赵侠客 引言 最近我收到一个非常诡异的线上BUG&#xff0c;触发BUG的业务流程大概是这样的&#xff1a;A系统新建任务数据需要同步到B系统&#xff0c;数据是多租户的&#xff0c;比如C租户在A系统新建了一条任务&#xff0c;那么C租户登录B系统后会看到…