自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 收藏
  • 关注

原创 Flink基础知识

Apache Flink是一个开源的分布式流处理框架,专为高性能、高可用性和精确的流处理应用而设计。根据官方定义:Apache Flink是一个框架和分布式处理引擎,用于对有界和无界数据流进行有状态计算。Flink被设计为可在所有常见集群环境中运行,以内存执行速度和任意规模执行计算。支持流批一体的统一处理模型提供低延迟(毫秒级)和高吞吐量的流处理能力内置**精确一次(Exactly-Once)**的容错语义支持有状态计算和事件时间处理。

2025-06-18 17:14:46 754

原创 REST接口/RPC

它是现代Web服务开发的主流选择,尤其适合。REST接口(RESTful API)是一种。

2025-06-18 16:58:07 916

原创 spark shuffle的分区支持动态调整,而hive不支持

Spark的动态分区调整能力源于其现代架构设计,包括内存计算、DAG调度和AQE优化,这些特性使Spark更适合交互式分析和复杂ETL场景,而Hive的MapReduce模型更适合固定批处理任务。

2025-05-29 09:33:40 661

原创 spark在执行中如何选择shuffle策略

综上,Spark通过数据量、内存、并行度等动态选择Shuffle策略,并提供丰富的参数和AQE机制实现自适应优化。对于大规模或复杂场景,建议开启AQE并结合Join Hint进行精细化控制。CSS通过预分区和顺序读取优化Shuffle性能,避免本地磁盘依赖。

2025-05-29 09:31:51 1003

原创 spark-AQE/Tungsten介绍及其触发条件

定义:Spark 3.0引入的自适应查询优化技术运行时动态调整执行计划。核心能力动态分区合并:自动合并小分区以减少Shuffle数据量。自动Broadcast Join:根据数据量动态切换Join策略。Skew Join优化:识别数据倾斜并自动调整分区策略。配置参数Tungsten(钨丝计划)定义:Spark 1.6推出的底层性能优化框架,通过内存管理和代码生成提升效率。关键技术内存列式存储:减少内存占用并提升缓存利用率。代码生成(Codegen):动态生成JVM字节码替代解释执行。

2025-05-29 09:30:35 1368

原创 spark- ResultStage 和 ShuffleMapStage介绍

维度触发条件Transformation 中的 Shuffle 操作Action 操作数据流向输出到 Shuffle 文件供下游读取输出到 Driver 或外部存储任务类型ResultTask依赖类型宽依赖(可能被多个下游 Stage 依赖)无下游依赖是否缓存数据通常不缓存(除非手动persist结果直接输出,不保留。

2025-05-28 09:50:03 1416

原创 Spark、Hadoop对比

对比维度HadoopSpark架构基于磁盘计算,MapReduce基于内存计算,DAG 优化性能批处理性能较低,延迟高批处理性能高,支持实时处理数据处理模式主要支持批处理支持批处理、实时处理、交互式查询等易用性MapReduce 编程复杂API 简单,开发效率高生态系统成熟但复杂组件集成紧密,易扩展适用场景离线数据分析、大规模日志处理实时数据分析、机器学习、图计算资源利用资源利用率低高效利用内存,资源利用率高如果你的场景主要是离线批处理,且对实时性要求不高,选择 Hadoop。

2025-05-27 21:23:08 897

原创 SSTable(Sorted String Table)结构与用途详解

SSTable 是一种。

2025-05-27 20:21:32 487

原创 Spark SQL、Hive SQL运行流程解析及对比

SQL Query↓Parser(解析SQL)↓Unresolved Logical Plan(未解析逻辑计划)↓Analyzer(解析表和列名)↓Resolved Logical Plan(已解析逻辑计划)↓Optimizer(Catalyst 优化器)↓Optimized Logical Plan(优化逻辑计划)↓Physical Planner(物理计划生成)↓Selected Physical Plan(选择的物理计划)↓。

2025-05-22 22:54:08 957

原创 数仓SQL投影介绍

投影是从表中选取部分列的操作,类似于数学中的函数映射,将原始数据映射到选定的列上。在SQL中,通过SELECT子句指定需要的列。例如:SELECT 列1, 列2 FROM 表名;这里选择了列1和列2,即对原始表进行了投影。投影是SQL查询中选择特定列的核心操作,通过SELECT实现,用于简化结果集、优化性能,并支持列的计算和别名定义。它是数据查询中不可或缺的一步,尤其在处理宽表(列较多的表)时能显著提升效率。

2025-05-22 22:39:45 552

原创 数仓-概念模型、逻辑模型、物理模型介绍

概念模型:抽象描述现实世界,如ER图。逻辑模型:转化为具体的数据表结构,如MySQL的表定义。物理模型:优化存储和性能,如索引和数据类型的选择。

2025-05-22 20:59:18 548

原创 spark-Catalyst 优化器和 Tungsten 执行引擎介绍

Catalyst 是Spark SQL 的查询优化框架,负责将用户的 SQL 查询或者 DataFrame 操作转换成高效的执行计划。它是一个基于规则的、可扩展的查询优化器。Tungsten 是 Spark SQL 的底层执行引擎,专注于提升物理执行阶段的性能。它主要通过内存管理和代码生成技术,极大提高了 Spark SQL 的执行效率。组件作用范围主要功能Catalyst 优化器查询计划层面(逻辑计划和物理计划优化)SQL 解析、语义分析、逻辑优化、物理计划生成和选择Tungsten 执行引擎。

2025-05-22 20:52:11 1161

原创 如何评估数仓建设的好坏(开发者/使用者视角)

从用户视角,可从以下方面评估数据建设的合理性:ComletenessRatiofield1−nullfieldcountblankfieldcountlinecounttruthAccuracyRatiofield1−illegalvaluecountwrongvaluecountinconsi。

2025-05-21 09:36:37 546

原创 spark-shuffle 类型及其对比

以上几种Shuffle类型的主要区别在于数据分布方式、排序过程和Reduce端合并过程。在实际应用中,需要根据数据分布情况、数据量大小和性能要求等因素选择合适的Shuffle类型。

2025-05-20 22:39:22 516

原创 spark任务的提交流程

fill:#333;color:#333;color:#333;fill:none;StandaloneYARNDriverExecutor。

2025-05-20 21:57:07 1364

原创 spark调度系统核心组件SparkContext、DAGSchedul、TaskScheduler、Taskset介绍

在某些调度策略下(如公平调度器中当某个队列需要回收资源时),TaskScheduler可能会执行任务抢占操作,从那些。Spark调度系统的核心组件主要有SparkContext、DAGScheduler和TaskScheduler。两者的协同工作实现了从高层次RDD转换到底层Task执行的完整链路,其中。:当某个Stage执行失败时,DAGScheduler通过。例如通过重新提交相关的TaskSet来尝试恢复执行。,TaskScheduler则关注。,以满足其他任务对资源的需求。

2025-05-20 21:56:55 1179

原创 SparkContext介绍

【代码】SparkContext介绍。

2025-05-20 20:14:47 486

原创 Doris bitmap原理

Bitmap 是一种压缩的位图数据结构,用于表示集合中的元素。核心思想:用一个比特位(bit)表示一个元素是否存在。存储方式:每个 bit 位可以表示一个对象的状态(如存在/不存在),而多个 bit 位可以组成一个字节(byte),多个字节组成一个更大的块。用途:主要用途是高效地处理大规模数据,尤其是需要快速判断某个元素是否存在的情况。比如:一个 Bitmap 长度为 8,可以用来表示 0-7 的数字是否存在。00010100。Doris 使用 Bitmap 的主要原因是为了。

2025-05-17 12:00:37 811

原创 Bitmap、Roaring Bitmap、HyperLogLog对比介绍

Bitmap是一种用位(bit)来表示集合元素是否存在的数据结构。每个位代表一个元素的状态(0或1),非常节省空间且支持快速集合操作。特性Bitmap(普通)用途精确存在标记压缩位图,精确存在标记近似基数估计(distinct count)空间效率低,稠密数据适合高,适合稀疏和稠密混合极高,超大数据量操作效率快快,支持高效集合操作快,适合流式计算支持操作交集、并集、差集交集、并集、差集只能估计基数是否有误差无无有,误差约1-2%能否返回元素能(通过位图索引)能(通过解码)不能。

2025-05-17 11:59:29 355

原创 布隆过滤器介绍及其在大数据场景的应用

布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否在一个集合中。快速判断元素是否存在可能存在误判(假阳性),但不会漏判(假阴性)占用空间小,适合大规模数据去重、过滤布隆过滤器是一种用空间换时间的高效数据结构,适合快速判断元素是否存在于大规模集合中,缺点是存在一定误判率,且传统版本不支持删除。布隆过滤器是一种高效的概率型数据结构,适合大规模数据去重和快速判断元素存在性。在离线数仓中,布隆过滤器能显著提升去重和Join性能,降低资源消耗。在实时分析数据库。

2025-05-17 11:52:36 778

原创 Bitmap原理及Hive去重方式对比

Bitmap(位图)是一种用位(bit)来表示数据集合的数据结构。一个长度为N的bitmap,每一位对应一个元素的状态(0或1)。例如,数字集合 {1, 3, 4},用bitmap表示就是第1、3、4位为1,其余为0。单位含义大小关系1 bit (b)最小数据单位,0或11 Byte (B)8 bit1 B = 8 b1 KB1024 Bytes方式功能描述优点缺点统计某列中不同值的数量简单直接,Hive原生支持对大数据量去重性能差,容易导致内存溢出,计算慢。

2025-05-17 11:41:17 1178

原创 Hadoop-HDFS-Packet含义及作用

Packet是 HDFS 数据传输的基本单位。当HDFS 客户端写入或读取文件时,数据会被分割成多个 Packet,每个Packet 包含一部分数据块(Block)的内容。Packet 是一个逻辑单位,通常由多个字节的数据和校验信息组成。Packet 是 HDFS 数据传输的基本单位,它将 Block 切分为更小的逻辑单位,便于高效的网络传输和数据校验。写入时,Packet 被依次传输到 DataNode 的 Pipeline,并通过确认机制确保数据可靠性。读取时。

2025-05-14 10:20:58 1228

原创 spark运行架构及核心组件介绍

组件功能适用场景Spark Core提供分布式计算的基础功能所有场景Spark SQL支持结构化数据的查询和操作数据仓库、ETL、BI支持实时数据处理日志分析、实时监控MLlib提供分布式机器学习算法大规模机器学习GraphX支持图数据处理社交网络分析、图计算。

2025-05-11 22:42:52 1362

原创 spark算子介绍

转换算子(Transformation)用于定义数据的处理逻辑,生成新的RDD。是惰性求值的,只有在调用行动算子时才会执行。mapfilterjoin等。行动算子(Action)用于触发计算,将结果返回到Driver端或输出到存储。collectcountforeach等。

2025-05-11 22:12:24 1106

原创 Spark 中RDD、Job,stage,task的关系

定义一个Job是Spark中由用户提交的一个逻辑任务,通常对应一个行动操作(Action),如collect()count()save()reduce()等。每次调用一个Action,Spark会生成一个新的Job。特点Job是整个计算的最高粒度单位。一个Job可能由多个Stage组成。举例wordCounts.collect() // 触发一个JobSpark中,JobStage和TaskJob是用户提交的逻辑任务。包含多个Stage。Stage。

2025-05-11 21:09:24 790

原创 spark-Schema 定义字段强类型和弱类型

强类型表示字段的类型在Schema中明确指定,并且在数据写入和读取时会严格验证数据是否符合该类型。如果数据的实际类型与Schema中定义的类型不匹配,系统会报错或拒绝操作。弱类型表示字段的类型在Schema中未明确指定,或者即使指定了类型,也不会严格验证数据是否符合该类型。数据写入和读取时,系统会尽量接受和处理各种类型的数据,而不会报错。强类型类型明确,验证严格,数据质量高,但灵活性较低。适用于对数据质量要求高的场景。弱类型类型宽松,验证灵活,适应性强,但数据质量可能较差。

2025-05-11 21:07:38 1189

原创 spark-Join Key 的基数/rand函数

Join Key 基数定义特点适用 Join 类型优化策略高基数唯一值数量较多,接近总行数数据分布均匀,Shuffle 数据量大,但不会出现数据倾斜确保分区均匀,使用 Broadcast Join(如果小表较小)。低基数唯一值数量较少,远小于总行数数据分布不均匀,容易出现数据倾斜处理数据倾斜(随机前缀打散、分区优化),使用 Broadcast Join(如果小表较小)。方法是否解决随机前缀一致性问题是否解决数据倾斜问题适用场景固定种子(RAND(seed))是否。

2025-05-10 23:11:24 926

原创 spark-哈希join介绍

哈希算法是一种将任意大小的数据映射到固定大小的值(称为哈希值)的算法。哈希值通常是一个整数,用于快速定位或标识数据。问题解释解决方法Shuffle Join复杂度数据传输和分区复杂度为O(n),网络开销较大。优化分区策略,减少数据传输量。Hash Join复杂度构建哈希表复杂度为O(n),查找阶段复杂度为O(1)。使用高效哈希函数,减少碰撞。哈希碰撞不同输入生成相同哈希值,导致数据定位失败或性能下降。链地址法、开放地址法、双哈希法等。哈希分布不均匀某些桶过于拥挤,导致性能下降。

2025-05-10 21:45:05 987

原创 数仓-可累计,半累加,不可累加指标,是什么,举例说明及解决方案

可累计指标指的是可以直接通过加总计算出结果的指标,通常是具有加法性质的数据。这类指标在时间、维度或其他粒度上都可以直接累加。半累加指标指的是在某些维度上可以累加,但在其他维度上无法直接累加的指标。这类指标通常需要额外的计算逻辑来支持累加。不可累加指标指的是无法直接通过加总计算出结果的指标。这类指标通常涉及平均值、比例、排名等复杂计算。指标类型定义举例解决方案可累计指标可直接累加销售额、订单数量、访问次数存储原始数据,直接使用SUM()累加半累加指标某些维度可累加,其他维度不可累加。

2025-05-10 21:15:33 595

原创 数仓-缓慢变化维是什么,如何解决

缓慢变化维指的是维度表中的某些属性会随时间发生变化,但这些变化不会频繁发生。客户信息:客户的地址、电话、邮箱等可能会变更。员工信息:员工的职位、部门、薪资等级等可能会调整。产品信息:产品的价格、分类等可能会更新。这些变化需要在数据仓库中进行记录,以便支持历史分析或当前状态查询。缓慢变化维是数据仓库设计中处理维度数据变化的核心问题。常见的解决方法包括SCD Type 1(覆盖更新)、Type 2(新增记录)、Type 3(增加字段)、Type 4(历史表)和Type 6(混合)。

2025-05-10 18:22:48 714

原创 Doris和Clickhouse对比

Doris 和 ClickHouse 都是非常流行的分布式数据库系统,主要用于处理大规模数据分析任务。它们在底层架构、运行原理和使用场景上有显著的区别。

2025-05-10 18:13:10 1060

原创 数仓-如何保障指标的一致性

业务定义标准化:指标分层设计:公共逻辑下沉:统一数据源:指标开发规范化:数据质量监控:版本管理:指标对齐机制:异常监控与告警:

2025-05-10 18:08:14 751

原创 数仓-范式建模、维度建模、雪花模型、星型模型对比及其适用范围

范式建模:维度建模:星型模型:雪花模型:

2025-05-10 17:56:42 832

原创 内存、磁盘、CPU区别,Hadoop/Spark与哪个联系密切

相比Hadoop,Spark更依赖内存,减少了对磁盘的依赖,因此性能通常比Hadoop更高。,内存的作用相对较小。

2025-05-10 17:00:33 1108

原创 Spark存储级别

Spark的存储级别决定了数据在内存和磁盘中的存储方式,以及是否对数据进行序列化。Spark中可以通过。

2025-05-08 21:16:53 585

原创 CBO和HBO区别及介绍

CBO(Cost-Based Optimizer)和 HBO(Heuristic-Based Optimizer)是两种数据库查询优化器的类型,它们在优化策略和实现方式上有显著的区别。在现代数据库系统中**,CBO 通常是主流选择**,因为它能更好地适应大数据场景和复杂查询需求。如果有具体的业务场景,可以进一步讨论如何选择和优化查询优化器!

2025-05-08 21:02:53 1244

原创 Hive内部表(管理表)和外部表的区别

默认创建的表是内部表。hive完全管理表(元数据和数据)的声明周期,类似于RDBMS的表。当删除表时,他会删除源数据以及表的元数据。Hive外部表:外部表的数据不是Hive拥有或者管理的只管理元数据的声明周期。要创建一个外部表,需要使用external关键字。删除外部表是只会删除元数据,而不会删除实际数据(源数据)。在hive外部依然可以访问实际数据(HDFS)。及。

2024-05-14 08:53:28 519

原创 Hive大表join大表如何调优

在Hive中,优化器会根据统计信息决定是将大表放在前面(Join的左边)还是小表放在前面。通常,优化器会选择数据量较小的表作为驱动表(小表作为左边),因为这样可以减少内存消耗并提高效率。但是,如果你有特定的需求,比如你知道大部分数据能快速过滤掉,希望减少任务的执行时间,那么你可以强制指定某个表作为小表。在Hive中,可以使用/*+ MAPJOIN(table_name) */ 注释来强制将一个大表作为小表处理。

2024-05-11 08:46:25 3930 2

原创 Hadoop--客户端读写hdfs数据

1.读数据(1)客户端通过调用FIleSystem对象的open()方法来打开希望读取的文件,对于hdfs来说,这个对象是分布式文件系统的一个实例。(2)DistributedFileSystem通过使用PRC(远程方法调用)来调用namenode,以确定文件起始块的位置。对于每一个块,namenode返回存有该块副本的datanode的地址。此外,这些datanode根据他们与客户端的距离...

2024-05-08 08:23:21 1245 1

原创 inner join和left semi join的联系和区别

参考:添加链接描述添加链接描述1 简介LEFT SEMI JOIN (左半连接)是 IN/EXISTS 子查询的一种更高效的实现。示例可以改写为2 特点1、left semi join 的限制是, JOIN 子句中右边的表只能在 ON 子句中设置过滤条件,在 WHERE 子句、SELECT 子句或其他地方过滤都不行。2、left semi join 是只传递表的 join key 给 map 阶段,因此left semi join 中最后 select 的结果只许出现左表。3、因为 le

2024-04-10 21:24:27 1226

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除