自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ITHomeZSL的博客

学习改变自己!

  • 博客(484)
  • 收藏
  • 关注

原创 大数据-拉链表分区设计与优化建议

特性分区不分区查询性能高(支持分区裁剪)低(总是全表扫描)数据管理易(可快速删除历史分区)难(删除需逐行)维护复杂度较高(需设计分区策略,管理分区)低(结构简单)适用场景中到大数据量,查询带时间条件小数据量,查询模式随机结论:对于绝大多数生产环境的拉链表应用,由于其数据会持续增长且查询通常带有时间过滤条件,按时间(尤其是end_date)进行分区是最佳实践。这是平衡性能、可维护性和成本的关键设计决策。

2025-10-18 12:36:19 442

原创 有个业务场景:某一天,业务那边继续要新增维度统计,你会怎么做,才不会影响到之前的指标计算?

步骤核心动作目标1. 分析与业务确认维度定义,评估对现有逻辑的影响。明确需求,判断是“简单扩展”还是“逻辑变更”。2. 模型设计扩展维度表或事实表,绝不修改已有核心结构。如需要,创建新表。保证数据模型的向后兼容性。3. 汇总层建设创建新的汇总表或视图来承载新维度下的指标,与旧的并存。实现业务访问的平滑过渡,零风险上线。4. 数据处理采用增量处理方式,避免全量重跑历史数据。降低计算成本,快速上线。5. 沟通上线明确通知业务方新资源的地址和用法,更新文档。确保业务方能够正确使用新的数据产品。

2025-10-17 08:30:43 205

原创 【SQL练习】Hive SQL多维度指标计算方法

在Hive SQL 中如何从多个维度去计算同一个指标?假如有一张订单表,表中有 时间,省份,商品分类,销售金额 共4个字段,如何1条sql计算出如下每天的以下指标:a)、每天销售额;b)、每天各省份销售额;c)、每天各商品分类销售额;d)、每天各省份、各商品分类销售额;在Hive SQL中,可以使用CUBE或ROLLUP来一次性计算多个维度的同一指标。

2025-10-16 20:25:06 171

原创 数据集市层相当于数仓分层中的哪一层?

数据集市层相当于哪一层?从数据内容和来源看:数据集市的数据主要对应DWS层和ADS层。DWS层提供了公共的、轻度汇总的数据集市内容。ADS层提供了面向特定部门或应用的、高度定制的数据集市内容。从概念范畴看:数据集市是一个逻辑上的概念,强调数据的服务对象和业务边界(如“财务数据集市”);而ODS/DWD/DWS/ADS是物理上的加工层级,强调数据的处理流程和粒度。所以,你不能简单地说“数据集市层就是DWS层”。

2025-10-16 06:45:07 336

原创 Sentry与Ranger区别及应用场景详解

这个选择在很大程度上也反映了早期Cloudera和两大 Hadoop 发行商技术路线的差异。在两家公司合并成为Cloudera之后,Ranger 已经成为其 CDP 产品线中默认和推荐的统一安全组件。你正在维护一个非常老旧且仅基于 CDH 的平台,并且只使用 Hive 和 Impala。你的需求非常简单,只需要一个轻量级的 SQL 授权工具,对审计和跨组件统一管理没有要求。选择 Ranger 的情况(当前的主流和标准):构建新的企业级数据平台:毫无疑问选择 Ranger。

2025-10-15 20:09:01 463

原创 大数据中PARQUET和KUDU的区别以及应用场景

选择 Parquet选择 KUDU当你的需求是…存储海量历史数据,进行复杂的批量分析和报告,对成本敏感。需要实时或近实时地插入、更新数据,并立即进行查询和分析。当你的数据…基本是只读的,或者仅以追加方式写入。频繁变化,需要行级的更新和删除。当你的查询…主要是全表扫描或大规模聚合,延迟要求不高。混合了按主键的随机读取和大范围的扫描查询。当你的团队…希望运维简单,充分利用现有对象存储(如S3)。有能力管理和运维一个分布式的数据库集群。

2025-10-15 20:07:39 711

原创 Impala NDV函数详解

NDV是 Impala 中一个极其重要的、用于优化性能的聚合函数。它通过牺牲微小的准确性,换来了在处理大规模数据去重计数时巨大的性能提升。在大多数分析场景下,它是的最佳替代品。

2025-10-15 20:06:21 836

原创 单个插入语句需要加事务么

情况是否需要加事务?理由单纯的单条INSERT语句不需要数据库已保证其原子性。该INSERT是一个更大业务操作的一部分需要需要保证整个业务操作的原子性(例如,同时插入多张关联表)。在高并发下需要精确获取自增ID考虑使用事务可以提供更好的隔离性,确保获取到正确的ID。使用的框架有默认事务行为遵循框架约定例如 Spring 的。核心原则:事务的边界应该由你的业务逻辑的原子性要求来决定,而不是由单个SQL语句的数量来决定。

2025-10-15 20:04:38 664

原创 什么时候使用left join,什么时候使用inner join,应该注意些什么?

决策点选择需要两个表都匹配的记录?INNER JOIN需要左表的所有记录,不管右表有没有匹配?LEFT JOIN需要查找左表在右表中没有对应项的记录?对右表的过滤不能影响左表记录的返回?将右表过滤条件放在ON子句对结果集的过滤(无论来自左表还是右表)?将过滤条件放在WHERE子句理解这些区别和注意事项,你就能在编写SQL时自信地选择正确的连接方式,并避免常见的性能陷阱和逻辑错误。

2025-10-15 20:03:43 751

原创 大数据中两个超级大的表join,发生了数据倾斜怎么处理?

优先选择简单的方案(过滤、广播),如果不行,再采用“分而治之”的打散策略。同时,积极利用现代计算引擎(如 Spark AQE)提供的自动化优化功能。

2025-10-14 21:28:49 675 1

原创 大数据-数仓分层以及每层的作用?

分层中文全称核心作用数据粒度对应建模阶段ODS操作数据层数据同步、备份、保持原始性与源系统相同无建模,贴源存储DWD数据明细层数据清洗、规范化、维度退化,形成明细事实与维度最细粒度(如单次交易)维度建模(明细层)DWS数据汇总层面向主题/对象聚合,构建公共宽表,提升性能较粗粒度(如每日汇总)维度建模(汇总层)ADS应用数据层满足具体应用的个性化计算需求不定,与应用相关面向应用的宽表或报表。

2025-10-14 21:28:27 834

原创 Impala建表的时候将时间创建为bigint的用意是什么?

这种设计在需要高性能时间范围查询和分析的场景中特别有用。

2025-10-14 21:27:32 198

原创 如果使用的Impala和kudu框架,刷数脚本怎么写?

场景推荐方法优点缺点小范围数据修正UPSERT精准、高效、灵活需要精确识别出待更新的数据全量覆盖/初始化简单、直接极其危险,易导致数据丢失,资源消耗大大规模历史数据刷新创建新表 + 原子切换最安全、可靠,易于验证和回滚步骤稍多,需要管理临时表通用刷数流程与脚本要点备份先行:在执行任何破坏性操作前,对重要表进行备份(例如使用临时表:永远不要在目标表上直接进行复杂的中间计算。先将结果写入临时表,验证后再同步。充分利用UPSERT:这是 Impala+Kudu 组合中处理刷数需求最强大的工具。

2025-10-14 21:26:36 824

原创 如果使用的Impala和kudu框架,取数脚本怎么写?

在 Impala + Kudu 框架下写取数脚本,本质上就是写标准SQL核心工具性能关键:尽量使用主键或前缀字段作为查询条件,避免全表扫描。优化助手:定期使用更新表统计信息。最佳实践:在脚本中写好注释,明确需求、作者和日期,方便自己和他人维护。掌握了这些,你就能高效地从 Impala + Kudu 平台上获取所需的数据了。

2025-10-14 21:25:43 858

原创 大数据开发中说的刷数是做什么?

刷数,也常被称为“数据回溯”或“数据重跑”,指的是通过重新执行数据处理程序(ETL/ELT任务),对过去某个时间范围的历史数据进行重新计算和生成的过程。特性取数刷数核心动作读(Query)写/更新(Insert/Update/Overwrite)目的获取数据,用于分析、报表修正、回溯、初始化历史数据执行频率高(日常操作)低(特殊、补救性操作)资源消耗相对较低非常高,消耗大量集群资源角色数据分析师、业务人员大数据开发工程师(主导)技术手段SQL查询。

2025-10-14 21:24:37 590

原创 大数据开发中说的取数是做什么?

对上:它直接服务于业务,是数据价值实现的起点。对下:它依赖于底层稳定、可靠、规范的数据仓库和数据体系建设。因此,一个高效的“取数”过程,不仅要求取数人员(如分析师)具备扎实的 SQL 能力和业务理解能力,也极大地依赖于背后数据平台和数据仓库的数据质量、数据规范性和查询性能。减少临时、重复的“取数”请求,将其沉淀为可复用的数据产品或报表,也是大数据团队的一个重要目标。

2025-10-14 21:23:49 583

原创 Dbeaver连接Impala找不到驱动包的问题

报错提示摘要:can’t load driver class ‘com. cloudera. impala. jdbc41. Driver’解决方案:需要将驱动包包装一层,放在文件夹里面即可。我当时把驱动包直接放在D盘目录下。否则报错找不到驱动包。

2025-10-14 12:39:37 68

原创 Vim查找文本指令详解

命令模式作用/patternNormal正向查找字符串pattern?patternNormal反向查找字符串patternnNormal跳转到下一个匹配项NNormal跳转到上一个匹配项Normal正向查找当前光标下的整个单词Normal反向查找当前光标下的整个单词:nohCommand暂时关闭查找高亮(直到下次搜索)Command永久开启查找高亮Command永久关闭查找高亮建议先从?nN这几个最常用的命令开始练习,它们会极大地提升你的编辑效率。

2025-10-13 18:42:45 341

原创 Hive分桶加速联合查询原理

减少Shuffle数据量:这是最大的优势。数据在写入时就已经根据JOIN Key进行了分区(预Shuffle),查询时无需再进行全量的数据移动,节省了大量网络和I/O开销。启用高效的SMB Join:当桶内排序时,可以实现高效的归并排序式连接,将JOIN操作的时间复杂度降低。采样优化:对分桶表进行采样(Sampling)会非常高效和随机,因为数据已经被均匀分布到各个桶中。这虽然不直接加速JOIN,但提升了开发调试效率。谓词下推优化:在某些情况下,结合分区和分桶,可以跳过更多不满足条件的数据文件。

2025-10-12 13:10:49 720

原创 Hive动态与静态分区区别详解

静态分区“指定值”。你知道目标在哪,直接告诉Hive。适用于目标明确、分区数量少的场景。动态分区“自动分”。你告诉Hive分区规则,数据来了自动分类。适用于从非分区表转换数据、分区数多且不确定的场景。在实际工作中,两者常常结合使用,即混合分区。例如,指定一个高级别的静态分区(如),然后让低级别的分区动态生成(如dateINSERT INTO TABLE logs PARTITION (country='US', date) -- country是静态,date是动态SELECTid,

2025-10-12 13:10:28 820

原创 hive中怎么给数据打标签

当打标逻辑极其复杂,无法用简单的 SQL 语句实现时(例如需要调用外部 API、进行复杂的数学计算、自然语言处理等),就需要用 Java 或 Python 编写。步骤编写UDF:用 Java(继承UDF类并重写evaluate方法)或 Python(使用TRANSFORM功能)实现你的打标逻辑。上传并注册UDF:将打包好的 JAR 文件或 Python 脚本上传到 HDFS,并在 Hive 中创建临时或永久函数。在SQL中调用:像使用内置函数一样使用你的 UDF。示例(Java UDF 伪代码)

2025-10-12 13:09:58 782

原创 如果现在,做数据的增量抽取,如何在重复抽取的过程中,避免出现重复的数据?

方法优点缺点适用场景时间戳/自增ID简单,易实现无法捕获删除,时间戳可能不可靠传统的,有相关字段的表CDC(数据库日志)全能,实时,影响小技术复杂,需要权限生产环境首选,技术条件允许必选哈希比较精确,可检测任何变化性能开销巨大无其他标识,小规模数据发布/订阅实时,解耦需改业务代码,消息可靠性难保证现代微服务架构,新建系统最佳实践建议首选CDC:如果技术条件和资源允许,使用CDC是最理想、最专业的解决方案。退而求其次:如果无法实现CDC,时间戳是最常用的替代方案。

2025-10-12 13:09:33 781

原创 Hadoop删除Hive分区方法总结

操作场景推荐命令说明删除单个分区标准做法,同时删除元数据和HDFS数据。安全删除(防报错)分区不存在时不会报错。批量删除旧分区编写 Shell 脚本循环调用结合和条件判断。仅删除元数据先设置再执行保留HDFS数据文件用于其他用途。绝对不要做的事直接删除分区目录而不处理元数据会导致元数据与实际情况不一致,查询报错。始终优先使用Hive SQL的命令。在脚本中使用IF EXISTS关键字避免错误。执行批量删除前,先用或确认要删除的分区信息是否正确。如果担心数据重要性,可以先为重要表设置。

2025-10-12 13:09:12 905

原创 Hive内部表与外部表区别详解

内部表 (Managed Table):Hive完全管理数据和元数据。DROP TABLE会删除元数据和数据本身。外部表 (External Table):Hive只管理元数据。DROP TABLE会只删除元数据,而数据本身保持不变。

2025-10-12 13:08:50 909

原创 数据库事务ACID特性及实现原理

事务(Transaction)是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。这些操作要么全部成功,要么全部失败,不允许停留在中间状态。最经典的例子就是银行转账:从A账户扣款100元,向B账户增加100元。这两个操作必须作为一个整体,要么都发生,要么都不发生。ACID特性核心实现技术简要原理原子性Undo Log记录修改前的旧数据,用于事务回滚。持久性事务提交前先顺序写日志到磁盘,崩溃后通过重做日志恢复。隔离性锁机制MVCC锁用于写写互斥;

2025-10-12 07:27:16 358

原创 【SQL练习】Oracle时间交叉SQL查询方法

NOT (不重叠)=>根据你的具体业务场景,将这个核心逻辑套用到WHERE子句中,并注意处理边界精度和索引优化即可。

2025-10-11 06:34:29 900

原创 大数据面试:指标数据暴涨原因排查

这是一个在大数据面试中非常经典且高频的问题。它不仅能考察你的技术深度,还能看出你排查问题的系统性思维。回答这个问题时,切忌直接抛出几个零散的原因。面试官希望看到一个结构化、逻辑化的排查思路。你可以按照以下框架来组织你的回答:你可以将原因归纳为四大类:这是首先要排查的方向,因为数据是源头。数据源异常:数据格式或内容变化:在排除数据问题后,就要检查自己的处理逻辑。代码BUG或逻辑变更:任务重启或延迟:这是最“健康”的原因,但也需要验证。真实的业务增长:业务异常:“面试官您好,关于指标数据暴涨的问题,我认为需要有

2025-10-10 22:14:07 515

原创 大数据项目 星型模型 雪花模型 星座模型 大部分公司更偏向哪种模型

模型优点缺点适用场景公司倾向星型模型查询简单、性能极高、易于理解和构建数据冗余、灵活性差,难以支持复杂业务部门级数据集市(Data Mart),特定的、简单的分析场景较少作为企业级核心模型,常作为星座的一部分雪花模型减少数据冗余、节省存储、符合范式理论查询复杂、性能较低(需要多表连接)、难以理解对数据存储空间极其敏感的场景;某些OLTP系统过渡到数据仓库的中间形态使用较少。在大数据领域,存储成本远低于计算成本,牺牲性能省存储不划算星座模型灵活性高、支持复杂分析、保证数据一致性。

2025-10-10 22:13:34 571

原创 Spark Streaming与Structured Streaming区别解析

特性维度编程接口低级 API:DStream(离散化流,Discretized Stream)高级 API:DataFrame / Dataset处理模型微批次(Micro-Batch)1. 微批次(默认)2. 连续处理(实验性)API 类型过程式(如何做)声明式(做什么)时间语义处理时间为主,事件时间支持较弱原生支持事件时间(Event Time)、处理时间、注入时间容错机制基于 WAL(Write-Ahead Log)和 RDD 血统(Lineage)

2025-10-10 22:13:02 579

原创 SparkConf配置:setMaster与setAppName解析

你可以把它们类比成一个工厂的筹建命令:相当于决定工厂建在哪以及规模多大。"local[*]"= “就把工厂建在我自家后院,并且把我家所有的工匠(CPU核心)都叫来开工!"yarn"= “我们去市里最大的工业园(Hadoop YARN集群)租个厂房干活。:相当于给这个工厂挂上一个厂牌和项目名称。= 厂牌上写着“测试Spark应用程序项目组”。这样,无论是谁来视察(你自己或者管理员),一眼就能知道这个工厂是干什么的。

2025-10-10 22:12:36 621

原创 Hive UDF 开发与使用指南

UDF的全称是,即用户自定义函数。Hive 虽然内置了丰富的函数(如concat()substr()sum()等),但有时这些函数无法满足特定的业务逻辑需求。这时,我们就可以通过编写 UDF 来扩展 Hive 的功能,实现自定义的处理逻辑。简单来说,UDF 让你可以用 Java(或其他 JVM 语言,如 Scala)编写函数,然后在 HiveQL 中像使用内置函数一样使用它。特性普通 UDFUDAFUDTF输入输出一行进,一行出多行进,一行出一行进,多行出类比 SQL+ 函数基类UDF。

2025-10-10 21:31:43 578

原创 MapReduce任务数量设置与依据

Map任务数:优先由输入数据和分片策略自动决定。只有在遇到大量小文件或需要优化时才去调整分片大小。Reduce任务数起点:使用(节点数 *作为初始值。在现代YARN中,更关注总容器资源。基准测试:对一个数据子集进行测试。观察作业日志中每个Reduce任务的处理数据量。监控调整:运行作业后,通过监控界面观察:是否有少数Reduce任务运行时间远长于其他任务(数据倾斜)?这可能需要对Key进行更好的设计。任务是否因内存不足而失败?

2025-10-10 21:31:12 651

原创 Hive中GROUPING SETS功能详解

特性优点适用场景一次查询,多维度结果;性能高(单次表扫描);代码简洁。需要生成包含不同粒度汇总数据的报表(如数据立方体)。grouping()消除NULL歧义,明确标识每一行数据的聚合维度。在查询结果中需要清晰区分原始数据NULL和聚合产生的NULL。生成层次化的聚合(上卷操作)。数据有自然层次结构时,如“国家-省-城市”。WITH CUBE生成所有可能组合的聚合。需要进行全面的多维分析,探索所有维度之间的关系。掌握。

2025-10-10 20:49:34 616

原创 Apache Kudu是什么?

特性基于 HDFS 的表 (如 Parquet)基于 Kudu 的表核心优势超高的批量读取吞吐量,适合海量数据分析混合工作负载,兼顾分析查询与随机读写数据更新效率低,需要重写文件效率极高,支持行级更新和删除插入模式适合大批量、追加式插入适合实时、逐条或小批量插入典型延迟分钟到小时级秒级到毫秒级主键无必须有主键SQL 操作SELECTINSERT(批量佳)SELECTINSERTUPDATEDELETEUPSERT适用场景数据仓库、历史日志分析、ETL 后的离线查询。

2025-10-09 22:06:13 416

原创 Impala导入数据的几种方式

方式适用场景优点缺点HDFS 文件导入大数据量批量加载,ETL 结果落地性能最佳,标准做法需要手动管理 HDFS 文件数据转换、表间数据迁移、格式转换灵活,可利用 SQL 能力需要扫描源表,有计算开销插入少量测试数据或配置数据SQL 标准,简单直观性能极差,不适合大批量数据通过 Hive 加载已存在 Hive 数据管道可利用 Hive 生态工具需要切换 Shell,多一个环节从 Kudu 导入实时/近实时数据导入与更新支持UPSERT,随机读写快仅适用于 Kudu 表使用 Sqoop。

2025-10-09 22:03:11 325

原创 Impala-shell常用内外部shell有哪些?

Impala-shell 是与 Impala 交互的主要工具,其命令分为(在启动 shell 时执行)和(在 shell 交互环境中执行)。PROFILEUSE <数据库>QUITEXIT。

2025-10-09 21:43:03 231

原创 Impala与Hive的关系及应用场景

Impala和Hive是Hadoop生态系统中相辅相成的两大SQL引擎。它们因共享相同的元数据和存储格式而紧密集成。它们因不同的架构设计Hive用于批处理,Impala用于交互式查询。因此,选择使用哪一个取决于你的具体需求:是要**“稳”** 还是要**“快”**。在现代大数据架构中,同时部署两者,让它们各司其职,是非常常见的做法。

2025-10-09 21:41:32 296

原创 Spark中yarn-client和yarn-cluster区别详解

我们来详细讲解一下 Spark on YARN 模式下和(在 Spark 后期版本中统一为cluster模式,但 YARN 集群模式有其特殊性) 的区别。这是一个在学习和使用 Spark 时非常核心的概念,主要关系到,而这个差异又直接影响了应用程序的行为、容错、性能和适用场景。

2025-10-05 14:21:48 717

原创 xcall jps命令详解

xcall jps是一个通过自定义 Shell 脚本实现的、用于分布式集群运维的高效命令。核心价值:一键查看整个集群的 Java 进程状态,提升运维效率。前提条件需要一个自写的xcall脚本。集群节点间需配置 SSH 免密登录。适用场景:Hadoop、Spark、Flink、Kafka 等任何基于 JVM 的分布式系统的日常监控和故障排查。

2025-10-05 14:09:46 665

原创 大数据在物流行业的使用

大数据已经将物流从一个“黑盒”状态转变为一个高度透明、可预测、可优化的智能网络。它不再仅仅是辅助工具,而是成为了现代物流企业的核心竞争力和神经系统。未来的发展趋势将是与物联网、人工智能、区块链等技术更深度的融合,最终实现整个供应链的自适应、自决策和自优化,即“智慧供应链”。

2025-10-05 11:27:34 656

空空如也

空空如也

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

TA关注的人

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