SQL专项练习第一天

        在大数据处理中,Hive 是一个非常强大的工具。今天,为大家分享五个 Hive 数据处理的实际案例,展示 Hive 在数据清洗、转换和分析方面的强大能力。

        先在home文件夹下建一个hivedata文件夹,把我们所需的数据写成txt文件导入到/home/hivedata/文件夹下面。

第一题、合并相同星座和血型的人

        我们有一组人员信息,包括名字、星座和血型。我们的目标是将相同星座和血型的人合并在一起。

如下数据:

小狮 水瓶座 A
小猿 射手座 A
小云 水瓶座 B
小锋 水瓶座 A
小琪 射手座 A

变为:
指标:将相同星座和血型的人合并在一起

射手座,A            小猿|小琪
水瓶座,A            小狮|小锋
水瓶座,B            小云

建表:

create table person_info(
name string,
constellation string,
blood_type string)
row format delimited
fields terminated by " "
stored as textfile;

加载数据:

load data local inpath '/home/hivedata/constellation.txt' into table person_info;

查询数据是否导入成功

select * from person_info;

通过以下 Hive 语句,我们可以实现

select concat(constellation, "," ,blood_type)as cb,concat_ws('|', collect_list(name)) as names
from person_info
group by constellation, blood_type;

第二题、电影分类展开

        我们有一组电影信息,包括电影名称和分类。我们的目标是将每个电影的分类展开,以便更好地进行分析。

如下数据:

《阿凡达2》 悬疑,动作,科幻,剧情
《满江红》 悬疑,警匪,动作,心理,剧情
《流浪地球》 科幻,动作,灾难

想得到如下数据:

《阿凡达2》     悬疑
《阿凡达2》     动作
《阿凡达2》     科幻
《阿凡达2》     剧情
《满江红》       悬疑
《满江红》       警匪
《满江红》       动作
《满江红》       心理
《满江红》       剧情
《流浪地球》     科幻
《流浪地球》     动作
《流浪地球》     灾难

 建表:

create table movie(movie string,category array<string>
)
row format delimited
fields terminated by ' '
collection items terminated by ','
tblproperties("skip.header.line.count"="1"); -- 跳过第一行数据

加载数据:

load data local inpath '/home/hivedata/movies.txt' into table movie ;

查询数据是否导入成功

select * from movie;

 通过以下 Hive 语句,我们可以实现

-- 字段是array类型
select movie, category1 from movie lateral view explode(category) mytable as category1;-- 字段是string类型
select movie, category1 from movie lateral view explode(category) mytable as category1;

第三题、查找三个表中互不重复的数据

        我们有三个表,分别是 A、B、C。数据如下我们的目标是找出这三个表中互不重复的数据。

        提示: 不重复的数据,即在三张表中所有的数据加在一起时,只出现了一次。

A.txt

1 
2
3
4
5
6
7
8
9
6
7

B.txt

2 
3 
11
12
14
15
16
18
35
30
40

C.txt

1
2
3
11
5
6
7
8
20

 建表:

-- 新建三个表:
create table a(id int);
create table b(id int);
create table c(id int);

加载数据:

load data local inpath '/home/hivedata/zuoye03_a.txt' into table A;
load data local inpath '/home/hivedata/zuoye03_b.txt' into table B;
load data local inpath '/home/hivedata/zuoye03_c.txt' into table C;

查询数据是否导入成功

select * from a;
select * from b;
select * from c;

 通过以下 Hive 语句,我们可以实现

select aa.id from (select id from aunion allselect id from bunion allselect id from c) aa group by aa.id
having count(*) = 1;

第四题、求出场次数最多的前三的英雄

        我们有一组游戏数据,包括游戏 ID 和英雄列表。我们的目标是找出出场次数最多的前三的英雄。

如下数据:

1 廉颇,镜,沈梦溪,李元芳,太乙真人
2 关羽,兰陵王,嬴政,虞姬,鲁班大师
3 梦琪,盘古,周瑜,狄仁杰,大乔
4 廉颇,澜,上官婉儿,公孙离,盾山
5 吕布,娜可露露,姜子牙,公孙离,张飞
6 马超,猪八戒,狄仁杰,沈梦溪,太乙真人
7 吕布,盘古,嫦娥,公孙离,张飞
8 廉颇,橘右京,西施,虞姬,大乔
9 关羽,镜,姜子牙,狄仁杰,鲁班大师
10 梦琪,阿古朵,周瑜,后羿,蔡文姬
11 夏侯惇,娜可露露,不知火舞,孙尚香,太乙真人
12 猪八戒,镜,嫦娥,伽罗,孙膑
13 廉颇,镜,上官婉儿,马可波罗,蔡文姬
14 梦琪,裴擒虎,沈梦溪,虞姬,鲁班大师
15 梦琪,盘古,不知火舞,成吉思汗,太乙真人
16 夏侯惇,澜,周瑜,马可波罗,张飞
17 猪八戒,露娜,周瑜,狄仁杰,盾山
18 吕布,橘右京,西施,蒙伢,蔡文姬
19 吕布,赵云,西施,公孙离,张飞
20 廉颇,兰陵王,沈梦溪,虞姬,大乔

 建表:

create table game(
id int,
heros array<string>
)row format delimited
fields terminated by ' '
collection items terminated by ',' ;

加载数据:

load data local inpath '/home/hivedata/heros.txt' into table game;

查询数据是否导入成功

select * from game;

 通过以下 Hive 语句,我们可以实现

with t as(select name, count(1) csfrom game lateral view explode(heros) mytable as namegroup by name
), t2 as (select name, cs, dense_rank() over (order by cs desc ) pm from t
)
select * from t2 where pm <= 3;

第五题、行转列展示学生选修课程

        我们有一组学生选修课程的数据。我们的目标是将这些数据转换为行转列的形式,以便更好地展示每个学生的选修情况。

 有如下数据,表示1、2、3三名学生选修了a、b、c、d、e、f中的若干课程

id  course
1 a
1 b
1 c
1 e
2 a
2 c
2 d
2 f
3 a
3 b
3 c
3 e

根据如上数据,查询出如下结果,其中1表示选修,0表示未选修

id  a  b  c  d  e  f
1   1  1  1  0  1  0
2   1  0  1  1  0  1
3   1  1  1  0  1  0

 建表:

create table courses(
id  int,
course string
)
row format delimited
fields terminated by ' '
tblproperties("skip.header.line.count"="1"); -- 跳过第一行数据

加载数据:

load data local inpath '/home/hivedata/homework0823/course.txt' into table courses;

查询数据是否导入成功

select * from courses;

 通过以下 Hive 语句,我们可以实现

--方法一
select id,max(case  when course='a' then 1 else 0 end) a,max(case  when course='b' then 1 else 0 end) b,max(case  when course='c' then 1 else 0 end) c,max(case  when course='d' then 1 else 0 end) d,max(case  when course='e' then 1 else 0 end) e,max(case  when course='f' then 1 else 0 end) f
from courses group by id;--方法二
select id,sum(case  when course='a' then 1 else 0 end) a,sum(case  when course='b' then 1 else 0 end) b,sum(case  when course='c' then 1 else 0 end) c,sum(case  when course='d' then 1 else 0 end) d,sum(case  when course='e' then 1 else 0 end) e,sum(case  when course='f' then 1 else 0 end) f
from courses group by id;

        通过以上五个案例,我们可以看到 Hive 在数据处理方面的强大能力。无论是数据清洗、转换还是分析,Hive 都提供了丰富的函数和工具,帮助我们轻松地处理大规模数据。希望这些案例对大家在 Hive 数据处理方面有所帮助。

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

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

相关文章

【STM32单片机_(HAL库)】4-5-1【定时器TIM】【感应开关盖垃圾桶】SG90舵机模块实验

1.硬件 STM32单片机最小系统SG90舵机模块 2.软件 sg90驱动文件添加main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "sg90.h"int main(void) {HAL_Init(); /* 初始化HAL库 */…

Linux命令大全及小例子

撰写一份关于Linux命令大全的详尽报道和分析是一项重要的任务&#xff0c;旨在让读者全面了解Linux命令的用途和应用场景。Linux系统因其强大的命令行工具而闻名&#xff0c;无论是系统管理、文件操作还是网络配置&#xff0c;Linux命令行都提供了灵活且强大的解决方案。以下是…

QT学习笔记2.2(安装部署_编译器)

QT学习笔记2.2&#xff08;安装部署_编译器) 编译器的版本&#xff0c;32位64位的 目前只用32位vs编译过&#xff0c;其他的还没有搞过。 一直没有搞清楚qt qtcreator 生成软件&#xff0c;32位和64位之间的关系 目前只使用32位qt生成打包了32位的项目。 编译器的安装 …

SAP HCM 抓取模拟工资核算日志RT表数据

一&#xff1a;故事背景 SAP的核算其实比较麻烦的就是没地方可以导出核算成功的人员编号&#xff0c;即使能导出也是树形的结构&#xff0c;需要反复加工多次才能整理好员工&#xff0c;所以非常麻烦&#xff0c;今天就想能不能抓取模拟工资的rt表数据. 二&#xff1a;解决办法…

ASP.NET Zero 多租户介绍

ASP.NET Zero 是一个基于 ASP.NET Core 的应用程序框架&#xff0c;它提供了多租户支持&#xff0c;以下是关于 ASP.NET Zero 多租户的介绍&#xff1a; 一、多租户概念 多租户是一种软件架构模式&#xff0c;允许多个客户&#xff08;租户&#xff09;共享同一套软件应用程序…

Unity 代码裁剪(Strip Engine Code)

文章目录 0.IL2CPP 打包运行闪退问题1.什么是代码裁剪2.为什么要使用代码裁剪3.代码裁剪设置与级别4.强制保留代码4.1 使用[Preserve]标签4.2 使用Link.xml文件 5.Strip中遇到的问题及解决方法6.注意事项 0.IL2CPP 打包运行闪退问题 Google Play要求从2019年8月1日起apk必须支…

2、项目配置设计(上)

文章目录 前言一、配置文件功能需求二、web工程设计思路三、Config实现思路 前言 配置文件作用&#xff1a;把需要经常修改的参数&#xff0c;从代码中分离出来,单独管理&#xff0c;方便后期维护。 开发一个web应用&#xff0c;肯定需要一些基础性的配置信息&#xff0c;这些信…

话术挂断之后是否处理事件

文章目录 前言联系我们解决方案方案一方案二 前言 流程&#xff1a;自动外呼进入机器人话术。问题&#xff1a;在机器人放音时用户挂断后&#xff0c;话术还会继续匹配流程&#xff0c;如果匹配上的是放音节点&#xff0c;还会进行放音&#xff0c;那么在数据库表conversation…

android Activity生命周期

android 中一个 activity 在其生命周期中会经历多种状态。 您可以使用一系列回调来处理状态之间的转换。下面我们来介绍这些回调。 onCreate&#xff08;创建阶段&#xff09; 初始化组件&#xff1a;在这个阶段&#xff0c;Activity的主要工作是进行初始化操作。这包括为Ac…

wsl中安装ubuntu,vscode访问这个ubuntu

WSL1升级为WSL2 wsl --set-default-version 2 wsl --set-version Ubuntu-22.04 2在windows商店中也可以安装ubuntu&#xff0c;在这个ubuntu中windows的c盘在/mnt/c中

【AIGC】2020-NIPS-去噪扩散概率模型

2020-NIPS-Denoising Diffusion Probabilistic Models 去噪扩散概率模型摘要1. 引言2. 背景3. 扩散模型和去噪自动编码器3.1 正向过程和 L T L_{T} LT​3.2 逆过程与 L 1 : T − 1 L_{1:T-1} L1:T−1​3.3 数据缩放、逆过程解码器和 L 0 L_{0} L0​3.4 简化的训练目标 4. 实…

强大的JVM监控工具

介绍 在生产环境中&#xff0c;经常会遇到各种各样奇葩的性能问题&#xff0c;所以掌握最基本的JVM命令行监控工具还是很有必要的 名称主要作用jps查看正在运行的Java进程jstack打印线程快照jmap导出堆内存映像文件jstat查看jvm统计信息jinfo实时查看和修改jvm配置参数jhat用…

Java 每日一刊(第20期):I/O 流

文章目录 前言流的起源及概念Java I/O 流概述字节流字符流转换流缓冲流对象流与序列化NIO&#xff08;New I/O&#xff09;流的关闭与资源管理本期小知识 前言 这里是分享 Java 相关内容的专刊&#xff0c;每日一更。 本期将为大家带来以下内容&#xff1a; 流的起源及概念J…

Leetcode: 0041-0050题速览

Leetcode: 0041-0050题速览 本文材料来自于LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer&#xff08;第 2 版&#xff09;》、《程序员面试金典&#xff08;第 6 版&#xff09;》题解 遵从开源协议为知识共享 版权归属-相同方式…

C++ | Leetcode C++题解之第447题回旋镖的数量

题目&#xff1a; 题解&#xff1a; class Solution { public:int numberOfBoomerangs(vector<vector<int>> &points) {int ans 0;for (auto &p : points) {unordered_map<int, int> cnt;for (auto &q : points) {int dis (p[0] - q[0]) * (p…

【Node.js】内置模块FileSystem的保姆级入门讲解

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;Vscode 本文代码都经由博主PleaSure乐事实操后得出&#xff0c;可以放心使用。 1.FileSystem介绍 Node.js 的 fs&#xff08;filesystem&#xff09;模块是一个核心模块&#xff0c…

C++入门基础知识97——【关于C++ 条件运算符 ? :】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C 条件运算符 ? :的相关内容&#xff…

【PCL】Ubuntu22.04 安装 PCL 库

文章目录 前言一、更新系统软件包二、安装依赖项三、下载 PCL 源码四、编译和安装 PCL五、测试安装成功1、 pcd_write.cpp2、CMakeLists.txt3、build 前言 PCL&#xff08;Point Cloud Library&#xff09;是一个开源的大型项目&#xff0c;专注于2D/3D图像和点云处理。PCL为点…

在WPF中实现多语言切换的四种方式

在WPF中有多种方式可以实现多语言&#xff0c;这里提供几种常用的方式。 一、使用XML实现多语言切换 使用XML实现多语言的思路就是使用XML作为绑定的数据源。主要用到XmlDataProvider类. 使用XmlDataProvider.Source属性指定XML文件的路径或通过XmlDataProvider.Document指定…

【折半查找】

目录 一. 折半查找的概念二. 折半查找的过程三. 折半查找的代码实现四. 折半查找的性能分析 \quad 一. 折半查找的概念 \quad 必须有序 \quad 二. 折半查找的过程 \quad \quad 三. 折半查找的代码实现 \quad 背下来 \quad 四. 折半查找的性能分析 \quad 记住 比较的是层数 …