Zeppelin框架及Hive查询操作

news/2024/5/18 18:35:39/文章来源:https://blog.csdn.net/qq_30353203/article/details/129963728

1)、介绍

Apache Zeppelin是一款基于Web交互式框架,支持多种语言,Scala、SparkSQL、Markdown,SQL、Shell、Python等。

Zeppelin提供数据分析、数据可视化。

可以使用Zeppelin链接SparkSQL

Zeppelin安装和使用

1)、安装

2)、使用

一键启动集群中所有的组件

cd /export/onekey

./start_all.sh

打开浏览器 访问,xxxx:8090

4)使用

1、创建note

2、编写SparkSQL

3、通过设置Zepplin的一些参数,方便使用

Hive查询操作

1)、基本语法

select [distinct]select_expr, select_expr, ... 
from table_reference 
[where where_condition] 
[group by col_list] 
[having where_condition] 
[order by col_list] ... 
[limit number]解释:select 查询关键字distinct 去重from 指定要查询的表where 指定查询条件group by  分组查询having 对分组后的结果进行条件筛选order by  排序limit  查询指定的记录数

2)、全表查询

select * from score;

3)、选择特定列查询

select sid, cid from score;

4)、使用别名查询

select sid as stu_id , cid course_id from score;

Hive查询操作-聚合函数

1)、介绍SparkSQL提供的聚合函数可以用来统计、求和、求最值等等

count:统计行数量

sum:获取单个列的合计值

avg:计算某个列的平均值

max:计算列的最大值

min:计算列的最小值

2)、应用

求总行数(count)

select count(1) from score;

select count(*) from score;

求分数的最大值(max)

select max(sscore)from score;

求分数的最小值(min)

select min(sscore)from score;

求分数的总和(sum)

select sum(sscore)from score;

求分数的平均值(avg)

select avg(sscore)from score;

Hive查询操作-where语句

1)、介绍

使用where语句,可以查询满足条件的数据,where语句紧随from关键字,where条件语句写法丰富,是Hive数据分析的灵魂之一。

2)、应用

# 查询出分数大于60的数据
select * from score where sscore > 60

Hive查询操作-操作符

1)、介绍

SparkSQL中提供了很多的操作运算符

2)、比较运算符

 

 Hive查询操作-比较运算符

1)、实例1

(1)查询分数等于80的所有数据
select * from score where sscore=80;(2) 查询分数在80到100的所有数据
select * from score where sscore between 80 and 100;
(3)查询成绩为空的所有数据
select * from score where sscore is null;
(4) 查询成绩是80 或90 的数据
select * from score where sscore in(80,90);

2)、应用2-like

使用like运算选择类似的值

选择条件可以包含字符或数字

%代表零个或多个字符(任意个字符)

_代表一个字符

(1)查找姓“李”的学生信息
select * from student where sname like '李%';
(2)查询名字第二个字是“兰”的学生信息
select * from student where sname like '_兰%';

Hive查询操作-操作符

1)、逻辑运算符

2)、实例

(1)查询成绩大于80 ,并且sid是01的数据
select * from score where sscore>80 and sid ='01';
(2)查询成绩大于80, 或者sid是01的数据
select * from score where sscore >80 or sid = '01';
(3)查询s_id不是01 和02的学生
select * from score where sid not in('01', '02');

Hive查询操作-分组查询

1)、介绍

分组关键字是group by,该语句通常会和聚合函数一起使用,按照一个或多个列对结果进行分组,然后对每个组执行聚合操作,注意使用group by分组之后,select 后面的字段只能是分组字段和聚合函数。

2)、实例

(1)计算每个学生的平均分数
select sid , avg(sscore) from score group by sid;
(2)计算每个学生的最高成绩
select sid, max(sscore)  from score group by sid;

Hive查询操作-Having语句

1)、介绍

Having语句通常于group by语句联合使用,用来过滤由group by语句返回的记录及集。Having语句的存在弥补了where关键字不能与聚合函数联合使用的不足

2)、实例

# 求每个学生平均分数大于85的人
select sid, avg(sccore) avgscore from score group by sid having avgscore > 85;

Hive查询操作-排序

1)、介绍

排序关键字order by,用于根据指定的列对结果集进行排序,在排序时,可以指定排序顺序,asc为升序,desc 为降序。

2)、案例

(1)查询学生的成绩,并按照分数升序排列
select * from score order by sscore asc;
(2)按照分数的平均值降序排列
select sid, avg(sscore) avg from score group by sid order by avg desc;

Hive查询操作-limit语句

1)、介绍

limit子句限制查询结果返回的数量

2)、案例

# 查询3条数据
select * from student limit 3;

Hive查询操作-多表操作

1)、介绍

(1)内连接查询
隐式内连接:
select * from A,B where 条件;
显示内连接:
select * from A inner join B on 条件;

(2)外连接查询
左外连接 :left outer join
select * from A left outer join B on 条件;
右外连接: right outer join
select * from A right outer join B on 条件;

 Hive查询操作-多表查询

1)、内连接案例

内连接:只有进行连接的两个表中都存在与连接条件相匹配的数据才会被保留

# 查询每个老师对应的课程信息
# 隐士内连接
select * from teacher t, course c where t.tid = c.tid;# 显示内连接
select * from teacher t inner join course c on t.tid = c.tid;
select * from teacheer t jion course c on t.tid = c.tid;

 2)、外连接案例

左外连接(left outer join)

左外连接:join 操作符左边表中符合where子句的所有记录将会被返回。

# 查询老师对应的课程
select * from teacher t left join course c on t.tid = c.tid;

右外连接(right outer join)

右外连接:join 操作符右边表中符合where 子句的所有记录将会被返回。

select * from teacher t right join course c on t.tid = c.tid;

满外连接(full outer join)

满外连接:将会返回所有表中符合where 语句条件的所有记录,如果任一表的指定字段没有符合条件的值的话,那么就是null值代替。

# 查询老师对应的课程
select * from teacher t full join course c on t.tid = c.tid;

Hive 查询操作-子查询

查询允许把一个查询嵌套在另一个查询中,其实就是select的嵌套

1)、将查询结果当成一个值

# 查询成绩最高学生的sid
select sid from score where sscore = (select max(sscore) from score);

2)、将结果当成一张表

# 将查询结果当成一张表
select sid from score a,(select max(sscore) max_score from score) b where a.sscore = b.max_score;

Hive内置函数

1)、介绍

在SparkSQL中提供了很多的内置函数,或者叫内嵌函数,包括聚合函数、数学函数、字符串函数、转换函数、日期函数、条件函数、表生成函数。

2)、数学函数

# 指定精度取整函数:round
语法: round(double a, int b)
说明:返回指定精度d的double类型
举例:hive> select round(3.1415926,4);
3.1416取随机数函数: rand 
语法: rand(),rand(int seed) 
说明:返回一个0到1范围内的随机数。如果指定种子seed,则会返回固定的随机数 
举例: 
hive> select rand(); 
0.5577432776034763 
hive> select rand(100); 
0.7220096548596434 

3)、字符串函数

字符串连接函数-带分隔符:concat_ws 
语法: concat_ws(string SEP, string A, string B…) 
说明:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符 
举例: 
hive> select concat_ws(',','abc','def','gh’); 
abc,def,gh 字符串截取函数:substr,substring 
语法: 
substr(string A, int start, int len),
substring(string A, intstart, int len) 
返回值: 
string 说明:返回字符串A从start位置开始,长度为len的字符串 
举例: 
hive> select substr('abcde',3,2); 
cd 
hive>select substring('abcde',-2,2);
de

4)、日期函数

日期转年函数: year 
语法: year(string date) 
说明:返回日期中的年。 
举例: 
hive> select year('2012-12-08’); 
2012 日期增加函数: date_add 
语法: date_add(string startdate, int days) 
说明:返回开始日期startdate增加days天后的日期。 
举例: 
hive> select date_add('2012-12-08',10); 
2012-12-18 日期减少函数: date_sub 
语法: date_sub (string startdate, int days) 
返回值: string 说明:返回开始日期startdate减少days天后的日期。 
举例: hive> select date_sub('2012-12-08',10); 
2012-11-28 

5)、条件判断函数

语法: CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
返回值: T
说明:如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回案例:
select 
sid ,
case when sscore>=60 then '及格’ when sscore<60 then '不及格’else '其他’ 
end as flag
from score

6)、行转列操作

行转列是指多行数据转换为一个列的字段

Hive行转列用到的函数

concat_ws(sep, str1,str2) --以分隔符拼接每个字符串

collect_set(col) --将某字段的值进行去重汇总,产生array类型字段

7)、行转列操作

1:建表 
create table emp( deptno int, ename string ) row format delimited fields terminated by '\t’; 2:插入数据: 
load data local inpath "/export/data/hivedatas/emp.txt" into table emp; 3:转换 select deptno,concat_ws("|",collect_set(ename)) as ems from emp group by deptno;。

Hive内置函数-开窗函数

lrow_number,rank,dense_rank

row_number,rank,dense_rank这三个函数用于数据排名,也可以用于分组排名。

1)、row_number,rank,dense_rank

-- 创建表
create table user_ access (user_id string, createtime string, --day pv int 
) 
row format DELIMITED FIELDS TERMINATED BY ','; -- 加载数据: 
load data local inpath '/export/data/hivedatas/user_access.txt' into table user_log;--实现分组排名--  ROW_NUMBER()  从1开始,按照顺序,生成分组内记录的序列-- RANK() 生成数据项在分组中的排名,排名相等会在名次中留下空位  -- ENSE_RANK() 生成数据项在分组中的排名,排名相等会在名次中不会留下空位select user_id, createtime, pv, 
rank() over(partition by user_id order by pv desc) AS rn1, 
dense_rank() over(partition by user_id order by pv desc) as rn2, 
row_number() over(partition by user_id order by pv desc) as rn3 from user_access; 

2)、sum,avg,min,max

用于实现分组内所有和连续累积的统计。

-- 从开头累加到当前行 
select user_id,createtime,pv, 
sum(pv) over(partition by user_id order by createtime rows between unbounded preceding and current row) as pv2 
from user_access; -- 从前3行累加到当前行 
select user_id,createtime,pv, sum(pv) over(partition by user_id order by createtime rows between 3 preceding and current row) as pv4 
from user_access; -- 从前3行累加到后一行 
select user_id,createtime,pv, sum(pv) over(partition by user_id order by createtime rows between 3 preceding and 1 following) as pv5 from user_access;

3)、sum,avg,min,max

-- 从开头累加到当前行 
select user_id,createtime,pv, 
max(pv) over(partition by user_id order by createtime rows between unbounded preceding and current row) as pv2 
from user_access; -- 从前3行累加到当前行 
select user_id,createtime,pv, max(pv) over(partition by user_id order by createtime rows between 3 preceding and current row) as pv4 
from user_access; -- 从前3行累加到后一行 
select user_id,createtime,pv, max(pv) over(partition by user_id order by createtime rows between 3 preceding and 1 following) as pv5 from user_access;

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

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

相关文章

JVM性能调优简介

一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范&#xff0c;JVM将内存划分为&#xff1a; New&#xff08;年轻代&#xff09; Tenured&#xff08;年老代&#xff09; 永久代&#xff08;Perm&#xff09; 其中New和Tenured属于堆内存&#xff0c;堆内存会从JVM启动参…

Hive查询语句

目录 1.1 基础语法 1.2 基本查询&#xff08;Select…From&#xff09; 1.2.1 数据准备 1.2.2 全表和特定列查询 1.2.3 列别名 1.2.4 Limit语句 1.2.5 Where语句 1.2.6 关系运算函数 1.2.7 逻辑运算函数 1.3 分组 1.3.1 Group By语句 1.3.2 Having语句 1.4 Join语句…

【云原生】Dockerfile制作WordPress镜像,实现compose编排部署

文章目录&#x1f479; 关于作者前言环境准备目录结构dockerfile制作镜像yum 脚本Dockerfile-mariadb 镜像Dockerfile-service 镜像docker compose 编排提升✊ 最后&#x1f479; 关于作者 大家好&#xff0c;我是秋意临。 &#x1f608; CSDN作者主页 &#x1f60e; 博客主页…

BGP联邦实验

实验目的&#xff1a; 实验拓扑&#xff1a; IP地址规划&#xff1a; AS2内部&#xff1a; 172.16.0.0/16 172.16.0.0/24---P2P网络 172.16.1.0/24----MA网络 172.16.1.0/29 172.16.1.8/29 172.16.1.16/29 172.16.1.24/29 172.16.1.32/29 172.16.1.40/29 172.16.2.0/24--…

NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037

首先我们先看一下kafka消费者流程,可以看到,我们需要创建一个consumeKafka_0_10 因为我们用的kafka的版本是0_10的对吧,要用对应版本的,消费者,然后,再用一个logattribute处理器,消费的 数据我们放到这个处理器里面进行查看 然后再就是需要配置consumekafka_0_10的,这个消费者…

数据结构入门(C语言版)栈和队列之队列的介绍及实现

队列队列的概念队列的实现过程队列的结构体与接口函数的定义队列的接口实现①初始化队列(QueueInit)②队尾入队列(QueuePush)③队头出队列(QueuePop)④队头元素(QueueFront)⑤队尾元素(QueueBack)⑥有效元素个数(QueueSize)⑦检测队列是否为空(QueueEmpty)⑧销毁队列(QueueDest…

《Java8实战》第4章 引入流

集合是 Java 中使用最多的 API。 4.1 流是什么 流是 Java API 的新成员&#xff0c;它允许你以声明性方式处理数据集合&#xff08;通过查询语句来表达&#xff0c;而不是临时编写一个实现&#xff09;。可以看作是遍历数据集的高级迭代器&#xff0c;而且还可以并行的处理。…

Java中创建线程的方式以及线程池创建的方式、推荐使用ThreadPoolExecutor以及示例

场景 Java中创建线程的方式有三种 1、通过继承Thread类来创建线程 定义一个线程类使其继承Thread类&#xff0c;并重写其中的run方法&#xff0c;run方法内部就是线程要完成的任务&#xff0c; 因此run方法也被称为执行体&#xff0c;使用start方法来启动线程。 2、通过实…

Object方法

系列文章目录 前端系列文章——传送门 JavaScript系列文章——传送门 文章目录系列文章目录对象方法一、Object原型方法1、hasOwnProperty2、isPrototypeOf3、propertyIsEnumerable4、toString5、其他二、Object方法1、assign2、create3、defineProperties4、defineProperty5、…

基于C#编程建立Vector数据类型及对应处理方法

以C#为例&#xff0c;讲解如何建立一个类&#xff0c;这其中需要考虑需要什么样的数据&#xff08;成员&#xff09;&#xff0c;什么样的属性以及方法&#xff0c;以及提供给外部程序调用&#xff0c;最后考虑怎么样去实现这样的算法。例如对于一个向量Vector&#xff08;类&a…

【深度学习】rnn是什么?循环神经网络是什么?RNN前向传播。

文章目录循环神经网络1.循环神经网络原理2.使用Numpy实现RNN层的前向传播3.RNN存在的问题4.小结循环神经网络 通常卷积神经网络 适合处理图像问题&#xff0c;然而通常适合处理自然语言的网络是循环神经网络。rnn是所有基本网络&#xff0c;就像cnn 是很多复杂网络的基本原型。…

leedcode刷题(3)

各位朋友们大家好&#xff0c;今天是我leedcode刷题系列的第三篇&#xff0c;废话不多说&#xff0c;直接进入主题。 文章目录分割链表题目要求用例输入提示做题思路c语言代码实现Java代码实现相交链表题目要求用例输入提示做题思路c语言实现代码Java代码实现分割链表 leedcod…

《 LeetCode 热题 HOT 100》——无重复字符的最长子串

本期给大家带来的是 LeetCode 热题 HOT 100 第三题关于 无重复字符的最长子串 的讲解。首先&#xff0c;我们还是先从题目入手进行分析思考&#xff01;&#xff01;&#xff01; 题目如下 &#xff1a;&#x1f447; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符…

改进蚁狮优化算法

目录 ​1 主要内容 2 部分程序 3 程序结果 4 程序链接 ​1 主要内容 该程序方法复现《改进蚁狮算法的无线传感器网络覆盖优化》两种改进算法模型&#xff0c;即原始ALO算法的基础上添加了两种改进策略&#xff1a; - 改进1&#xff1a;将原先的间断性边界收缩因子变为连…

【Android开发经验】-- 如何实现RecyclerView子项的点击事件?

目录 实例 实现思路 实现代码 进一步需求&#xff1a;数据库存储 实例 假设现在需要完成一个以下需求的任务&#xff0c;下面两个图左边是点击前未完成&#xff0c;右边是点击后已完成&#xff0c;如何实现点击图标切换另一个图标&#xff1f;&#xff08;矩形框中的内容是…

医药产品经理渠道资源获取的方法有哪些?

收集渠道信息是医药产品经理非常重要的工作之一&#xff0c;以下是一些可行的方法&#xff1a; 与销售人员和客户服务团队交流 销售人员和客户服务团队是企业与患者、医生和医院进行联系的主要渠道。他们可以提供很多有关市场需求和竞争对手情况的信息。产品经理可以通过与销…

机械臂动力学参数辨识学习笔记

1、为什么需要动力学参数辨识&#xff1f; 图1 电机三环控制图 通常情况下&#xff0c;标准的工业控制器通过机械臂内部的PID进行调节控制机械臂的运动&#xff0c;即用PID输出力矩&#xff0c;涉及到经典的图一所示的电机三环控制&#xff08;位置环、速度环、电流环&#xff…

用机器学习sklearn+opencv-python过古诗文网4位数字+字母混合验证码

目录 获取验证码图片 用opencv-python处理图片 制作训练数据集 训练模型 识别验证码 编写古诗文网的登录爬虫代码 总结与提高 源码下载 在本节我们将使用sklearn和opencv-python这两个库过掉古诗文网的4位数字字母混合验证码&#xff0c;验证码风格如下所示。 验证码获…

DM的学习心得和知识总结(三)|DM数据库DBMS_WORKLOAD_REPOSITORY 包及其性能分析工具AWR

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、达梦数据库产品及解决方案&#xff0c;点击前往 2、达梦技术文档&#xff0c;点击前往 3、武汉达梦数据库有限公司 官网首页&#xff0c;点击前往 1、本文内容全部…

【软考备战·希赛网每日一练】2023年4月10日

文章目录一、今日成绩二、错题总结第一题第二题三、知识查缺题目及解析来源&#xff1a;2023年04月10日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析&#xff1a; 本题属于专业英语&#xff0c;大体了解意思即可。 题目大意&#xff1a; 第二题 解析&#xff1a…