- 博客(76)
- 收藏
- 关注
原创 【Mysql】 数据库三范式、数据库反三范式
•设计数据库时,某一个字段属于一张表,但它同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段。
2024-06-28 11:24:07
468
2
原创 【Mysql】子查询
1)子查询概念•一条select 查询语句的结果, 作为另一条 select 语句的一部分2)子查询的特点•子查询必须放在小括号中•子查询一般作为父查询的查询条件使用3)子查询常见分类•where型 子查询: 将子查询的结果, 作为父查询的比较条件•from型 子查询 : 将子查询的结果, 作为 一张表,提供给父层查询使用•单列多行子查询: 子查询的结果是单列多行, 类似一个数组, 父层查询使用 IN 函数 ,包含子查询的结果。
2024-06-28 11:20:39
679
原创 【Mysql】多表查询、隐式内链接、显式内连接、左外连接、右外连接
假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。•左外连接: left join , 以左表为基准 ,查询左表的所有数据, 以及与右表有交集的部分。•右外连接: right join , 以右表为基准,查询右表的所有的数据,以及与左表有交集的部分。•以左表为基准, 匹配右边表中的数据,如果匹配的上,就展示匹配到的数据。•如果匹配不到, 左表中的数据正常展示, 右边的展示为null.
2024-06-27 09:25:00
793
原创 【Mysql】多表关系设计
例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系,接下来我们一起学习一下多表关系设计方面的知识。1)分析: 演员与角色 是多对多关系, 一个演员可以饰演多个角色, 一个角色同样可以被不同的演员扮演。•外键唯一 主表的主键和从表的外键(唯一),形成主外键关系,外键唯一 UNIQUE。•在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键。1)分析: 省和市之间的关系是 一对多关系,一个省包含多个市。
2024-06-27 09:19:53
704
原创 【Mysql】多表、外键约束
•外键指的是在 从表中 与主表的主键对应的那个字段,比如员工表的 dept_id,就是外键。1.员工表中有一个字段dept_id 与部门表中的主键对应,员工表的这个字段就叫做 外键。•使用外键约束可以让两张表之间产生一个对应关系,从而保证主从表的引用的完整性。2.拥有外键的员工表 被称为从表, 与外键对应的主键所在的表叫做主表。•使用外键约束,约束 dept_id ,必须是 部门表中存在的id。•主表: 主键id所在的表, 约束别人的表。•从表: 外键所在的表多, 被约束的表。
2024-06-26 17:42:10
759
1
原创 【Mysql】MySQL事务操作-自动提交
在关系型数据库管理系统中,一个逻辑工作单元要成为事务,必须满足这 4 个特性,即所谓的 ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。MySQL 默认每一条 DML(增删改)语句都是一个单独的事务,每条语句都会自动开启一个事务,语句执行完毕 自动提交事务,MySQL 默认开始自动提交事务。1)MySQL默认是自动提交事务,设置为手动提交,登录mysql,查看autocommit状态。将jack 账户金额 -500元。
2024-06-26 15:04:30
810
原创 【Mysql】数据库事务-手动提交
•ROLLBACK : 表示撤销事务,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。•即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,滚回到事务开始时的状态。•COMMIT : 表示提交事务,即提交事务的所有操作,具体地说,就是将事务中所有对数据库的更新都写到磁盘上的物理数据库中,事务正常结束。如果事务中,有某条sql语句执行时报错了,我们没有手动的commit,那整个事。
2024-06-24 19:33:03
1220
1
原创 【Mysql】SQL约束、主键约束、非空、唯一、外键约束
什么是约束: 对表中的数据进行进一步的限制,从而保证数据的正确性、有效性、完整性. 违反约束的不正确数据,将无法插入到表中。注: 主键如果让我们自己添加很有可能重复,我们通常希望在每次插入新记录时,数据库自动生成主键字段的值.•主键是给数据库和程序使用的,跟最终的客户无关,所以主键没有意义,只要能够保证不重复就好。默认地 AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,请使用下面的方式。唯一约束的特点: 表中的某一列的值不能重复( 对null不做唯一的判断 )
2024-06-22 18:18:25
1077
1
原创 【Mysql】DQL操作单表、创建数据库、排序、聚合函数、分组、limit关键字
之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对某一列的值进行计算,然后返回一个单一的值(注意:聚合函数会忽略null空值)。•limit是限制的意思,用于 限制返回的查询结果的行数 (可以通过limit指定查询多少行数据).•组合排序: 同时对多个字段进行排序, 如果第一个字段相同 就按照第二个字段进行排序,以此类推。•SELECT 字段1,字段2…•分组查询:指的是使用 GROUP BY 语句,对查询的信息进行分组,相同数据作为一组。
2024-06-22 17:45:41
1373
原创 【ClickHouse】副本、分片集群 (六)
注意:我们演示副本操作只需要在hadoop101和hadoop102两台服务器即可,上面的操作,我们hadoop103可以你不用同步,我们这里为了保证集群中资源的一致性,做了同步。通过分片把一份完整的数据进行切分,不同的分片分布到不同的节点上,再通过Distributed表引擎把数据拼接起来一同使用。注意:ClickHouse的集群是表级别的,实际企业中,大部分做了高可用,但是没有用分片,避免降低查询性能以及操作集群的复杂性。副本只能同步数据,不能同步表结构,所以我们需要在每台机器上自己手动建表。
2024-06-21 16:38:22
1109
1
原创 【ClickHouse】第三方工具DataGrip的使用、Clickhouse整合spark、Clickhouse整合flink、sparkcore方式、sparksql方式 (五)
方法提供的第三方工具蛮多的,它们提供了一些ClickHouse的接口。它可以是可视化界面、命令行界面或API,比如:Client libraries、Integrations、GUI、Proxies等等。
2024-06-21 16:23:09
701
2
原创 【ClickHouse】SQL 操作(Update 和 Delete、查询操作、alter 操作、导出数据) (四)
基本上来说传统关系型数据库(以MySQL为例)的SQL语句,ClickHouse基本都支持,这里不会从头讲解SQL语法,只介绍ClickHouse与标准SQL(MySQL)不一致的地方。3)支持各种JOIN,但是JOIN操作无法使用缓存,所以即使是两次相同的JOIN语句,ClickHouse也会视为两条新SQL。“重”的原因主要是每次修改或者删除都会导致放弃目标数据的原有分区,重建新分区。虽然可以实现修改和删除,但是和一般的OLTP数据库不一样,Mutation语句是一种很“重”的操作,而且不支持事务。
2024-06-20 19:05:18
1100
1
原创 【ClickHouse】表引擎的使用、TinyLog、Memory、MergeTree、ReplacingMergeTree、SummingMergeTree (三)
所以 ReplacingMergeTree 能力有限, ReplacingMergeTree 适用于在后台清除重复的数据以节省空间,只会在各个分区内部进行去重,不能保证整个表中的数据都是唯一的。order by是MergeTree中唯一一个必填项,甚至比primary key还重要,因为当用户不设置主键的情况,很多处理会依照order by的字段进行处理(比如后面会讲的去重和汇总)。稀疏索引的好处就是可以用很少的索引数据,定位更多的数据,代价就是只能定位到索引粒度的第一行,然后再进行进行一点扫描。
2024-06-20 19:01:41
1426
原创 【 ClickHouse】 ClickHouse数据类型(整型、浮点型、布尔型、Decimal型、字符串、数组、时间类型)(二)
2)FixedString(N):固定长度N的字符串,N必须是严格的正自然数。当服务端读取长度小于N的字符串时候,通过在字符串末尾添加空字节来达到N字节长度。固定长度的可以保存一些定长的内容,比如一些编码,性别等但是考虑到一定的变化风险,带来收益不够明显,所以定长字符串使用意义有限。例如,将固定精度的数字转换为整数值,如时间用毫秒为单位表示,因为浮点型进行计算时可能引起四舍五入的误差。使用场景:一般数据值比较小,不涉及大量的统计计算,精度要求不高的时候。固定长度的整型,包括有符号整型或无符号整型。
2024-06-19 12:36:52
966
1
原创 【ClickHouse】简介入门、Clickhouse的特点、ClickHouse 的安装(一)
ClickHouse入门ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。ClickHouse的特点行式存储如图-1所示:图-1 行式存储列式存储如图-2所示:图-2 列式存储列式储存的好处1)对于列的聚合,计数,求和等统计操作优于行式存储。
2024-06-19 12:15:54
943
原创 【Spark】SparkStreaming缓存操作,SparkStreaming程序的部署、升级与维护、优化建议(十一)
Spark会每隔batchDuration时间去提交一次Job,如果你的Job处理的时间超过了batchDuration的设置,那么会导致后面的作业无法按时提交,随着时间的推移,越来越多的作业被拖延,最后导致整个Streaming作业被阻塞,这就间接地导致无法实时处理数据,这肯定不是我们想要的。要注意的是,如果你要执行窗口长度为30分钟的窗口操作,那么Executor的内存资源就必须足够保存30分钟内的数据,因此内存的资源要求是取决于你执行的操作的。换句话说,batch应该在生成之后,就尽可能快地处理掉。
2024-05-22 15:17:39
1204
原创 【Spark】Spark核心原理加强、Spark专业术语定义(Application/App、Driver、Cluster Manager、Worker、Executor、RDD)(十二)
指的是用户编写的Spark应用程序/代码,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码,Spark应用程序,由一个或多个作业JOB组成(因为代码中可能会调用多次Action),如图-1所示:图-1 spark应用程序。
2024-05-22 15:17:22
706
原创 【Spark】Streaming常见的算子操作transform,updateByKey,window函数(十)
比如下图中,就是对每三秒钟的数据执行一次滑动窗口计算,这3秒内的3个RDD会被聚合起来进行处理,然后过了两秒钟,又会对最近三秒内的数据执行滑动窗口计算。DStream上述提供的所有的transformation操作,都是DStream-2-DStream操作,没有一个DStream和RDD的直接操作,而DStream本质上是一系列RDD,所以RDD-2-RDD操作是显然被需要的,所以此时官方api中提供了一个为了达成此操作的算子——transform操作。简单理解就是:统计截止到目前为止key的状态。
2024-05-20 15:42:52
627
1
原创 【Spark】SparkStreaming实时处理入门案例SparkStreaming编程整合HDFS整合Kafka(九)
1)Kafka中topic的partition与Spark Streaming中生成的RDD的partition无关,因此,在KafkaUtils.createStream()中,增加某个topic的partition的数量,只会增加单个Receiver消费topic的线程数,也就是读取Kafka中topic partition的线程数量,它不会增加Spark在处理数据时的并行性。Receiver接收到的数据,说白了就是一个个的batch数据,是RDD,存储在Executor内存。
2024-05-20 15:42:33
1214
原创 【Spark】流式计算简介,什么是SparkStreaming,常见的离线和流式计算框架(八)
流式计算简介什么是SparkStreamingSpark Streaming类似于Apache Storm,用于流式数据的处理。根据其官方文档介绍,Spark Streaming有高吞吐量和容错能力强等特点。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等,如图-1。数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果也能保存在很多地方,如HDFS,数据库等。
2024-05-17 09:43:12
1023
原创 【Hive】窗口函数(案例)其他操作( join、 排序)beeline和JDBC、SerDe、视图(view)、 Hive存储、Hive压缩、Hive结构和优化 (五)
textfileRCFileorcparquetavro和avro和将文件以序列形式来存储(序列化文件)如果不指定,那么HDFS默认将文件以textfile格式存储textfileavro和是行存储格式,RCFileorc和parquet是列存储格式textfile不支持修改(delete和update),但是列存储格式都支持delete和update操作,效率非常低。
2024-05-17 09:42:49
915
原创 【Hive】窗口函数(移位函数案例、排序函数案例)(四)
需求二:查询每一位顾客的消费明细以及上一次的消费时间需求三:查询最早进店消费的前20%的顾客信息排序函数案例原始数据案例
2024-05-16 09:14:55
324
原创 【HBase】Compaction(压实)机制、HRegionServer读写流程、HBase和Hive的整合、Phoenix (三)
Phoenix是Apache提供的基于HBase的JDBC的工具,提供了类SQL语言来操作HBasePhoenix进行数据分析的OLTP的框架,可以预HBase、Flume、Hive、Spark、Flink等框架进行集成特点优点:提供了类SQL语言来操作HBase的数据,降低了学习HBase的成本缺点:提供的语言并不是标准的SQL;底层是将SQL转化为HBase API操作,所以效率不如直接操作HBase。
2024-05-16 09:14:38
1327
原创 【Spark】持久化操作,共享变量,broadcast广播变量,accumulator累加器,Spark RDD的分区与依赖关系(七)
Spark中最重要的功能之一是跨操作在内存中持久化(或缓存)数据集。当您持久化RDD时,每个节点将其计算的任何分区存储在内存中,并在该数据集(或从该数据集派生的数据集)上的其他操作中重用这些分区。这使得未来的行动更快(通常超过10倍)。缓存是迭代算法和快速交互使用的关键工具。可以使用persist()或cache()方法将RDD标记为持久化。第一次在动作中计算时,它将保存在节点的内存中。Spark的缓存是容错的——如果RDD的任何分区丢失,它将使用最初创建它的转换自动重新计算。
2024-05-15 08:42:08
1423
原创 【Hive】数据类型(struct类型)、运算符和函数(nvl函数、 case-when函数、 explode函数、 列转行、行转列、自定义函数、 窗口函数)、正则捕获组 (三)
在Hive中,提供了非常丰富的运算符和函数,用于对数据进行处理和分析。在Hive中,运算符和函数可以归为一类如果需要查看Hive中所有的函数,可以通过如果想要查看某一个函数的描述,可以使用-- 简略描述-- 详细描述在Hive中,还允许用户自定义函数在Hive中,函数必须结合其他的关键字来构成语句!自定义UDF:需要定义一个类,Hive1.x和Hive2.x继承UDF类,但是Hive3.x,UDF类已经过时,所以需要继承GenericUDF自定义UDTF:需要定义一个类,继承。
2024-05-15 08:41:29
1008
原创 【HBase】HBase的结构、 HRegion、分裂策略、Zookeeper的作用、HBase架构的读写流程 (二)
在HBase中,会从行键方向上对表来进行切分,切分出来的每一个结构称之为是一个HRegion切分之后,每一个HRegion会交给某一个HRegionServer来进行管理。HRegionServer是HBase的从节点,每一个HRegionServer可以管理多个HRegion如果新建了一个表,那么这个表中只包含1个HRegion。
2024-05-14 08:48:12
905
原创 【Hive】 表结构(分区表、分桶表)、数据类型(array类型、map类型)(二)
Hive提供非常多的数据类型,分为两类:基本类型和复杂类型基本类型Hive类型Java类型tinyintbytesmallintshortintintbigintlongfloatfloatdoubledoublebooleanbooleanstringStringbinarybyte[]timestampTimestamparraymap和struct。
2024-05-14 08:47:53
542
原创 【Java】新手小白入门编程第3讲 JAVA数组训练案例
键盘录入一个整数,创建一个该长度的数组,为每一个元素赋值为1-10的随机整数,最后打印数组中所有值大于5且为偶数的元素。2) 定义int类型的变量zs(组数)和zps(每组的人数),并通过键盘录入给zs(组数)和zps(每组的人数)赋值。1)定义inGroupLower60Num(每组内低于60的学员数量),用于统计每组的不及格人数。3) 生成3个0-9的随机数,为每一个元素赋值(可以用循环,也可以不使用循环)。定义一个含有五个元素的数组,并为每个元素赋值,求数组中所有元素的最小值。
2024-05-13 08:59:02
771
原创 【Java】新手小白入门编程第2讲 java入门案例
4) 提示: “\”在java中是转移符,如果要在字符串中写一个”\”,你需要写为\”。需求描述:使用字符串类型String,在控制台输出以下内容。3) 在main方法中,使用输出语句输出如下图形。需求描述:按步骤编写代码,打印相关内容到控制台。需求描述:按步骤编写代码,打印相关内容到控制台。 3) 控制台输出5行字符串类型常量值。 4) 控制台输出5行字符类型常量值。1) 定义一个类,类名Test04。3)控制台输出5行整数类型常量值。4)控制台输出5行小数类型常量值。需求描述:在控制台打印一段话。
2024-05-13 08:58:42
488
原创 【Hive】Hive简介概述、安装、基础语法、 表及数据操作(一)
官网提供的Hive安装包,最多支持Spark2,但是现在使用的比较多的Spark3版本,也因此,实际过程中,如果想要让Hive支持Spark3,就意味着需要自己下载Hive的源代码并且修改,自己编译!需要注意的是,在Hive中,分区字段在原始数据中是不存在的,而是在加载数据的时候手动指定,所以分区实际上可以认为是数据的"伪列"。一般而言,在Hive中,手动建表手动添加数据的表,大部分是内部表;从person表中查询数据,将id<5的数据覆盖到p2表中,将age<18的数据写入到p3表中。
2024-05-11 08:50:40
475
原创 【HBase】简介概述、安装、基本操作、基本命令 (一)
HBase是Yahoo!公司开发的后来贡献给了Apache的一套开源的、分布式的、可扩展的、基于Hadoop的非关系型数据库(),因此HBase并不支持SQL(几乎所有的非关系型数据库都不支持SQL),而是提供了一套单独的命令和API操作关系型数据库和非关系型数据库针对的数据是不同的HBase本身是仿照了Google的来实现的,因此HBase和Big Table的原理几乎一致,只是Big Table使用的是C语言实现的,HBase使用的是Java。
2024-05-11 08:49:29
1048
原创 【Spark】Spark编程体验,RDD转换算子、执行算子操作(六)
Spark编程体验项目依赖管理<dependencies> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.12.10</version> </dependency> <d
2024-05-10 09:55:33
1047
原创 成功解决 reference to Seconds is ambiguous
程序运行过程中报reference to Seconds is ambiguous错误。重新导一下Seconds的包就可以了。原因是Seconds的导包出错。
2024-05-10 08:54:08
259
原创 【Hadoop】MapReduce (七)
在大数据开发环境中,虽然实际处理的文件大部分都是大文件,但是依然无法避免产生小文件一般而言,如果文件大小≤Block*0.8,那么此时就认为这是一个小文件。实际过程中,一般认为不超过100M的文件就是小文件小文件在分布式环境下的问题目前对小文件的处理方案无非两种:合并(merge)和打包MapReduce提供了一种原生的打包方案:,将多个小文件打成一个包数据倾斜在集群中,因为处理的数据量不均等导致任务执行时间不一致而产生的等待,称之为数据倾斜数据倾斜可能发生在Map端,也可能会发生在Reduce
2024-05-09 08:40:55
790
8
原创 【Hadoop】YARN (八)
YARN Scheduler目前支持三种调度器:FIFO Scheduler(先进先出调度器)、Capacity Scheduler(容量调度器)、Fair Scheduler(公平调度器)在Hadoop3.2.4中,默认使用的是。
2024-05-09 08:40:38
671
原创 【Spark】 Spark核心概念、名词解释(五)
转换(Transformations) (如:map, filter, groupBy, join等),Transformations操作是Lazy的,也就是说从一个RDD转换生成另一个RDD的操作不是马上执行,Spark在遇到Transformations操作时只会记录需要这样的操作,并不会去执行,需要等到有Actions操作的时候才会真正启动计算过程进行计算。:在Standalone(上述安装的模式,也就是依托于spark集群本身)模式中即为Master(主节点),控制整个集群,监控Worker。
2024-05-08 08:55:06
561
1
原创 NoSuchMethodError: scala.collection.mutable.Buffer.empty()Lscala/collection/GenTraversable
NoSuchMethodError: scala.collection.mutable.Buffer.empty()Lscala/collection/GenTraversable
2024-05-07 17:27:13
250
原创 【Kafka】Kafka架构(五)
通常,一个典型的Kafka集群中包含若干Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU、Memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper集群。在.index文件中,存储的是key-value格式的,key代表在.log中按顺序开始第n条消息,value代表该消息的位置偏移。即使消息不在index记录中,在已有的记录中查找,范围也大大缩小了。
2024-05-07 15:39:11
1172
原创 【Flume】Interceptor拦截器 (三)
实际过程中,可以使用Ganglia监控Flume的数据流。Ganglia是Berkeley发起的一个开源的集群监控项目,可以检测数以千计的节点的性能Ganglia包含三个模块gmond(Ganglia Monitoring Daemon):轻量级的监控服务,需要监控哪一个节点的性能,就在这个节点上安装gmond服务,可以监控当前节点(系统)的各种指标数据:CPU、内存、磁盘、网络等信息。
2024-05-07 15:38:45
1236
开题报告springboot019高校心理教育辅导设计与实现开题报告
2024-04-20
MapReduce详解包括配置文件
2024-04-18
Hadoop简介以及配置文件
2024-04-18
HDFS详解和配置文件
2024-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人