一. 从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业务的三个
    在这里插入图片描述

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
org.apache.hive.jdbc.HiveDriver是Apache Hive项目的JDBC驱动程序。Hive是一个基于Hadoop的数据仓库基础设施,它提供了一个SQL类似的查询语言(HiveQL)来处理存储在Hadoop集群中的大规模数据。 要下载org.apache.hive.jdbc.HiveDriver,可以按照以下步骤进行: 1. 打开Apache Hive项目的官方网站,可以在https://hive.apache.org/上找到。 2. 导航到“下载”页面,该页面通常位于网站导航栏的顶部或底部。 3. 在下载页面上,查找与你的操作系统和Java版本兼容的Hive JDBC驱动程序。 4. 单击下载链接以开始下载驱动程序。根据你的网速和文件大小,下载过程可能需要一些时间。 5. 下载完成后,将下载的JAR文件保存到你指定的文件夹中。 下载Hive JDBC驱动程序后,你可以在Java项目中使用它来连接和查询Hive服务器。只需将驱动程序JAR文件添加到项目的类路径中,然后使用以下代码示例来加载并注册HiveDriver: ``` import java.sql.DriverManager; import java.sql.Connection; public class HiveDriverExample { public static void main(String[] args) { try { // 加载HiveDriver类 Class.forName("org.apache.hive.jdbc.HiveDriver"); // 建立Hive服务器连接 Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "", ""); // 在连接上执行查询语句等操作 // ... // 关闭连接 con.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 通过以上步骤,你就可以成功下载并使用org.apache.hive.jdbc.HiveDriver来连接和操作Hive服务器。记得根据自己的具体环境和需求进行配置和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值