当前位置: 首页 > news >正文

一. 从Hive开始

1. 怎么理解Hive

Hive不能理解成一个传统意义上的数据库,应该理解成一个解决方案。
是Hadoop在hdfs和mapreduce之后才出现的一个结构化数据处理的解决方案。
Hdfs解决了大数据的存储问题,mapreduce解决了数据的计算问题。
一切似乎很美好。
但是使用成本太高

SQL语言的发明使得,数据处理的门槛减低了很多。
Hive就是为了用户使用sql来处理数据

总结,大数据背景下,hdfs看起来想一个无限大的存储空间,mapreduce的思想充分利用所有的cpu和内存。Hive使得用户可以像单机时代一样,用sql来处理数据。

概念回顾: SQL(Structured Query Language),也就是结构化的查询语言。
所以hive中的一个核心模块就是metastore, 用来存储结构化的信息,也就是“数据的数据”,其实也是借用了传统文件系统的“metaData”(元数据)的概念。
一般会存有多少列,每一列是什么样的数据结构这样的数据。
然后hive的执行引擎会将sql进行语法分析,生成语法树,然后生成mapreduce程序,进行数据的计算工作。

2. Hive背景知识

了解hive之前要了解HDFS,mapReduce的概念

HDFS:分布式文件系统
说白了也是一层中间件,不用自己筛选服务器磁盘,且有备份容错机制

MapReduce:分布式计算引擎(鼻祖)
分治:每一个计算器只计算小部分的
规约:将小部分的计算结果再次联合
这就是mapReduce的灵魂

Hive是在前两者之后出现的,而在这之前处理大数据都是用的mapReduce自己进行编程。
但是这样的做法效率太低,人们还是更加习惯使用sql来处理数据

最初的hive就仅仅是提供了一个sql转成mapReduce的解释器

传统的数据库:数据的存储和数据引擎是一体的。
Hive:存储和引擎分离

Hive特点如下:

  • 1.将存储到HDFS的数据给套上一层表结构。
  • 2.然后请分布式计算引擎来帮忙写入和查询(mapReduce,Tez,Spark)。
  • 3.Hive自己仅仅是维护了一个metastore服务和hiveServer服务,前者提供数据的表结构关系,后者对外提供查询和写入的接口。
  • 4.Hive存储数据的数据结构是可选的:txt、orc等,除txt外都是列式存储,而传统的数据库都是行式存储。
  • 5.没有索引或者粗粒度的索引

实时计算And离线计算:
实时计算是指对输入数据进行近乎即时的处理和分析,以获取当前状态或预测未来趋势。这种计算方式要求系统能够在数据产生后立即进行处理,并将结果迅速反馈给相关系统或用户。实时计算通常用于需要高时效性和高准确性的场景

离线计算则是指对数据进行非实时、批量式的处理和分析。这种计算方式通常用于对历史数据进行深度挖掘和分析,以发现数据中的模式和趋势,为业务决策提供支持。离线计算不需要即时性,但要求计算结果的准确性和全面性。

3. HQL之DQL

Select
From
Where :可以使用hive支持的任何函数和运算符,但聚合函数除外
Group by:select字段要么是group by分组的字段,要么是被聚合函数应用的字段,聚合函数的本质就是多进一出。
Having:where是没有办法和聚合函数一起使用的,having子句可以让我们筛选分组后		的数据,having中可以使用聚合函数
Order by:全局排序,强烈建议limit和order by一起使用,避免行数过大,如果设置		了hive.mapred.mode为strict时,使用不带limit的order by会有异常。
Limit:用于限制select返回的行数,只给一个参数,代表最大行数,给两个参数代表与		第一行的偏移量。
  • 用union注意:
    如果要将order by、sort by、cluster by、distribute by、limit用于单个select中,需要括号,例如:
    在这里插入图片描述
    如果要应用于整个union查询,要放在最后一个之后
    在这里插入图片描述

  • CTE表达式
    With 假名 as (select子查询)
    Select *
    From 假名
    其实就是引导定义,支持链式
    With q1 as (select子查询)
    Q2 as (select子查询)
    Select *
    From (使用q1和q2)

  • 内连接
    Inner join 或者 join 或者 直接不写
    两个表的交集

  • 左外连接
    Outer可以省略
    左表全右表可能不全,而且右边可以为null

  • 全外连接
    Outer可以省略
    两边都可以为null,就是并集,两边都全并且去重
    就相当于左右外连接同时使用

  • 左半开连接
    Left semi join
    但是结果只会返回左边的字段,并且得到交集,也就是不允许右边为null
    效果上等于内连接后,只取左边的字段

  • 算术运算符
    除并取整 div
    除并取余 %
    位与运算 & : 全真才真
    位或 | : 全假才假
    位异或 ^ : 不等为1
    位取反 ~

  • 逻辑运算符
    And
    Or
    Not 或者 !
    In
    Not in
    Exists : 注意是决定主查询是否得以保留
    在这里插入图片描述

3.1 Hive函数分两大类

内置函数
用户自定义函数

  • 内置函数
    数值类型函数
    日期类型函数
    字符串类型函数
    Concat(str1, str2)
    Concat(分隔符,str|数组)
    Substr(str,start)不是从0是从1开始,负数就是倒着数开始,直到最后
    Substr(str,2,2)从2开始并长度为2
    正则表达式替换函数
    Regexp_replace(str1,正则表达式,str2)
    Parse_url()
    Split()
    集合函数
    条件函数
    If (1=2, 100, 200) : true为100, false为200
    When case 1=1 then XXX
    Else
    End as 假名
    数据脱敏函数

  • 用户自定义函数:根据输入输出的行数
    UDF: 普通函数,一进一出
    UDAF : 聚合函数,多进一出
    Count
    Avg
    Min
    Max
    多维分析
    Grouping_sets
    Cube
    Rollup
    UDTF: 表生成函数,一进多出
    Explode()
    Array或者map
    限制: 只查询源数据表没有问题,只查询explode爆炸的表也没有问题,但是不能都返回
    所以hive专门提供了侧视图的语法,专门用来搭配explode这样的UDTF函数
    其实就是源join爆炸

  • 侧视图
    Lateral view XXX()as 假名
    是一种特殊的语法,主要搭配UDTF类型函数一起使用,用于解决UDTF函数的限制(也即是爆炸的虚表没有和原表进行连接)

  • 开窗函数
    窗口函数
    OLAP函数
    特点: 输入值是从select语句的结果集中的一行或者多行的“窗口”中获取的。
    关键字:over
    最常见的,分组聚合总是会屏蔽很多细节
    在这里插入图片描述所以窗口函数的存在使得分组聚合过程中的细节被保留
    其中sum比较特殊,有四种不同的用法
    在这里插入图片描述
    还有适合用来top业务的三个
    在这里插入图片描述

相关文章:

一. 从Hive开始

1. 怎么理解Hive Hive不能理解成一个传统意义上的数据库,应该理解成一个解决方案。 是Hadoop在hdfs和mapreduce之后才出现的一个结构化数据处理的解决方案。 Hdfs解决了大数据的存储问题,mapreduce解决了数据的计算问题。 一切似乎很美好。 但是使用成本…...

Linux下的PWM驱动

PWM PWM简介⭕ **PWM(Pulse Width Modulation,脉冲宽度调制)**是一种利用微处理器的数字输出对模拟电路进行控制的技术。通过改变脉冲的占空比,可以控制模拟电路的输出电压或电流。PWM技术广泛应用于电机控制、灯光调节、音频信号…...

日语输入法平假名和片假名切换

在学日语输入法的时候,我们在使用罗马音输入的时候,在进行平假名和片假名切换: 1、使用电脑在打字,日语输入法切换的时候使用 Shift Alt 如果日语输入法显示为 A 需要切换为 あ的话可以按Caps Lock键 。(相当于中文…...

Oracle向量搜索及其应用场景

Oracle 向量搜索(AI Vector Search)是一个集成到 Oracle 数据库中的功能,旨在优化人工智能(AI)工作负载。它允许用户存储和查询非结构化数据的语义内容,如文档、图像等,形式为向量。 向量数据类…...

【排序算法】六、快速排序补充:三指针+随机数法

「前言」文章内容是对快速排序算法的补充,之前的算法流程细节多难处理,这里补充三指针随机数法(递归),这个容易理解,在时间复杂度上也更优秀。 快排:三指针随机数法 原理跟之前的一致&#xff…...

PyTorch torch.cdist函数介绍及示例代码

1. torch.cdist 函数介绍 torch.cdist 是 PyTorch 中用于计算两组向量之间成对距离的函数。它可以计算两个张量(矩阵)中的每对向量之间的距离,支持多种距离度量方式,如欧氏距离(默认)或 p 范数距离。 函数原型 torch.cdist(x1, x2, p=2.0, compute_mode=use_mm_for_eu…...

CTK框架(四): 插件编写

目录 1.生成插件 1.1.环境说明 1.2.服务类,纯虚类,提供接口 1.3.实现插件类,实现纯虚函数 1.4.激活插件,加入ctk框架的生命周期中 1.5.添加资源文件 1.6..pro文件 2.使用此插件 3.总结 1.生成插件 1.1.环境说明 编译ct…...

深入理解C代码中的条件编译

引言 条件编译是 C 编程中的一个重要特性,它允许开发人员根据不同的条件选择性地编译源代码的不同部分。这一特性对于编写跨平台的程序、优化代码性能或控制编译时资源消耗等方面非常重要。本文将深入探讨条件编译的工作原理、使用场景、高级应用以及注意事项&…...

Ubuntu16.04操作系统-内核优化

1. 概述 本文所用优化是生产环境中经过长期验证的内核优化策略,针对的服务器与POD主要用于高CPU、高内存、高IO的业务场景。 备注: OS: ubuntu16.04, 内核: 4.15.0-147-generic 主要涵盖以下内容优化: ulimit优化加强tcp参数其他内存参数 …...

Qt/C++编写的Onvif调试助手调试神器工具/支持云台控制/预置位设置等/有手机版本

一、功能特点 广播搜索设备,支持IPC和NVR,依次返回。可选择不同的网卡IP进行对应网段设备的搜索。依次获取Onvif地址、Media地址、Profile文件、Rtsp地址。可对指定的Profile获取视频流Rtsp地址,比如主码流地址、子码流地址。可对每个设备设…...

【原创】java+swing+mysql密码管理器系统设计与实现

个人主页:程序员杨工 个人简介:从事软件开发多年,前后端均有涉猎,具有丰富的开发经验 博客内容:全栈开发,分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片,希望和大家…...

JavaEE-HTTPHTTPS

目录 HTTP协议 一、概念 二、http协议格式 http请求报文 http响应报文 URL格式 三、认识方法 四、认识报头 HTTP响应中的信息 HTTPS协议 对称加密 非对称加密 中间人攻击 解决中间人攻击 HTTP协议 一、概念 HTTP (全称为 "超⽂本传输协议") 是⼀种应⽤…...

iLogtail 开源两周年:社区使用调查报告

作者:玄飏 iLogtail 作为阿里云开源的可观测数据采集器,以其高效、灵活和可扩展的特性,在可观测采集、处理与分析领域受到了广泛的关注与应用。在 iLogtail 两周年之际,我们对 iLogtail 开源社区进行了一次使用调研,旨…...

Ubuntu 比较两个文件夹

比较两个文件夹下的大量文件是否一致,可以通过以下几种方式完成: 1. 使用 diff 命令 diff 命令不仅可以比较文件,还能递归比较文件夹。可以使用 -r 选项来递归比较两个目录下的文件: diff -r /path/to/dir1 /path/to/dir2 如…...

两数之和--力扣1

两数之和 题目思路C代码 题目 思路 根据题目要求,元素不能重复且不需要排序,我们这里使用哈希表unordered_map。注意题目说了只对应一种答案。 所以我们在循环中,使用目标值减去当前循环的nums[i],得到差值,如果我们…...

vue原理分析(三)new()创建Vue实例

今天我们来分析Vue实例的创建 代码如下: Vue.config.productionTip falsenew Vue({render: h > h(App),}).$mount(#app) Vue.config.productionTip false 这个配置成false,是阻止启动生产消息 new Vue({render: h > h(App),}).$mount(#app)…...

Spring MVC: 构建Web应用的强大框架

Spring MVC: 构建现代Web应用的强大框架 1. MVC设计模式简介 MVC (Model-View-Controller) 是一种广泛使用的软件设计模式,它将应用程序的逻辑分为三个相互关联的组件: Model (模型): 负责管理数据、业务逻辑和规则。View (视图): 负责用户界面的展示,将数据呈现给用户。Con…...

网络学习-eNSP配置NAT

NAT实现内网和外网互通 #给路由器接口设置IP地址模拟实验环境 <Huawei>system-view Enter system view, return user view with CtrlZ. [Huawei]undo info-center enable Info: Information center is disabled. [Huawei]interface gigabitethernet 0/0/0 [Huawei-Gigabi…...

动态规划-最长回文子串

题目描述 给你一个字符串 s&#xff0c;找到 s 中最长的 回文子串。 对于该题使用中心扩展法在某些情况下可以比动态规划方法更优&#xff0c;尤其是在处理较长字符串时。这是因为中心扩展法具有更好的空间复杂度&#xff0c;并且在实际应用中可能具有更快的运行速度&#xf…...

海康威视 嵌入式 面经 海康威视嵌入式软件 嵌入式硬件总结面试经验 面试题目汇总

标题海康威视 嵌入式 面经 海康威视嵌入式软件 嵌入式硬件总结面试经验 面试题目汇总 整理总结了海康威视嵌入式的面试题目&#xff01;&#xff0c;可以供大家面试参考 标题海康威视 嵌入式 面经 五月底投递&#xff0c;六月初面试&#xff0c;一场技术面&#xff0c;一场H…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...