Hive 实战技术
文章平均质量分 83
Hive实战经验分享。分享Hive实战中遇到的问题及经验
余额抵扣
助学金抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
莫叫石榴姐
10多年IT经验,数仓及SQL领域教练及专家,曾作为主面试官,面试多个候选人
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数仓实战案例:订单履约累积快照表设计方案与实现代码(Hive)
本文构建了一个基于Hive1.2的订单履约数据仓库分层解决方案,严格遵循ODS/DWD/DWM/DWS分层规范。方案从原始日志落地到累积快照生成,明确各层职责边界:ODS保留原始数据,DWD清洗原子明细,DWM轻度聚合订单信息,DWS计算耗时/超时等衍生指标并生成每日全量快照。通过命名规范、SQL模板、权限控制等技术手段保障分层约束,实现订单全流程状态追溯和履约效率分析,同时确保数据原子性、复用性和可维护性。原创 2025-12-18 11:00:00 · 117 阅读 · 0 评论 -
面试提问:Hive中如何高效的判断两张表数据是否完全一致?
Hive表数据一致性验证方法摘要:采用分层验证策略,从低成本的元数据检查到高代价的内容验证。首先对比Schema结构(字段类型、顺序)、行数、分区等元数据;其次通过哈希求和法高效验证内容一致性,将每行数据转为哈希值并求和比对;对于分区表按分区并行计算。若需定位差异,可采用哈希统计次数法或EXCEPT ALL方法。关键优化包括:空值处理、分隔符选择、哈希截断等,兼顾准确性与性能,特别适合大数据量场景。原创 2025-10-11 12:00:00 · 87 阅读 · 0 评论 -
制造行业订单全生命周期管理数仓项目实战
本文介绍了离散制造企业订单管理的数据仓库设计方案。采用分层架构(ODS原始数据层、DWD明细层、DWS汇总层、ADS应用层),通过ETL流程实现数据流转。方案重点包括:1)构建订单明细、状态、节点三类宽表;2)设计漏斗转化、状态监控、统计指标三大汇总主题;3)提供顶部概览、订单追踪、甘特图等应用层数据。优化建议涵盖存储格式、分区策略、索引创建和增量更新。该方案有效支持订单全流程追踪、健康度监控和流程瓶颈分析等核心业务需求。原创 2025-09-29 13:51:33 · 290 阅读 · 0 评论 -
Hive中map函数的基础知识及使用
Hive中的map函数用于创建和操作MAP类型数据,将键值对组合成结构化对象。该函数要求键值类型一致且键唯一,支持静态创建或动态生成MAP列。核心应用包括属性聚合、日志处理、数据拆分统计等场景,需配合explode函数处理动态数据。使用时需注意键的唯一性、类型一致性、NULL值处理及版本兼容性问题。掌握map函数能有效简化复杂数据查询,是处理用户属性、商品特征等结构化数据的实用工具。原创 2025-09-29 10:07:37 · 116 阅读 · 0 评论 -
如何利用Yarn定位数据倾斜问题?
YARN在大数据开发中虽不直接检测数据倾斜,但可通过多种方式辅助定位问题。关键方法包括:1)通过YARN WebUI查看Task执行时间分布,发现异常耗时任务;2)利用CLI检查Container运行时长差异;3)分析聚合日志识别处理特定Key的慢任务;4)监控节点负载不均情况。定位到倾斜后,可结合计算框架进一步分析Key分布,并通过增大资源、启用推测执行或AQE等策略优化。YARN在倾斜排查中主要承担发现异常、提供可视化分析、日志追踪和资源调优等辅助角色。原创 2025-09-26 12:00:00 · 84 阅读 · 0 评论 -
数仓实战:SLA 达成率计算脚本
本文介绍了基于DolphinScheduler的任务SLA监控系统方案。主要内容包括: 系统架构 适配DolphinScheduler 2.0+版本 支持MySQL/PostgreSQL数据库 核心数据表:t_ds_task_instance和t_ds_process_instance 实现方案 创建SLA配置表dim_task_sla_config 开发SLA达成率计算SQL脚本 建立结果表dws_sla_daily_monitor 提供月度报告SQL模板 功能特点 自动提取业务日期 计算任务延迟时间 7原创 2025-09-25 09:00:00 · 329 阅读 · 0 评论 -
基于 DolphineScheduler 中使用计数器方式实现的双表切换
【摘要】双表切换是一种解决数据写入期间报表显示异常的技术方案,通过维护主备两张结构相同的表实现平滑过渡。核心流程包括:在备用表完成数据更新后,通过原子操作切换视图指向,确保查询服务零中断。该方案适用于数据仓库全量更新、数据库结构变更等场景,具有高可用性和数据一致性优势。典型实现方式包括视图切换、表重命名等技术手段,结合DolphinScheduler可实现自动化调度。需要注意不适合高频小表更新、强事务一致性等场景。文中还详细介绍了基于计数器的Doris数据库实现方案,包含7个具体实施步骤和异常处理建议。原创 2025-09-23 10:00:00 · 197 阅读 · 0 评论 -
基于Python的Hive建表DDL语句自动化生成脚本
【摘要】本文介绍了一个自动化生成Hive建表SQL脚本的工具,通过YAML配置文件定义表结构(如表名、字段、分区、存储格式等),Python脚本自动转换为标准SQL文件。支持字段类型映射、自动添加注释、分区设置等功能。工具可扩展对接Excel元数据、支持不同数仓类型映射、添加表属性,适用于数据治理标准化、新人快速建表等场景。运行方式简单,只需配置YAML文件后执行Python脚本即可生成标准化的建表语句。原创 2025-09-12 09:00:00 · 75 阅读 · 0 评论 -
Hive实战:如何优雅地为已存在表添加二级分区?(附完整迁移方案)
《Hive表升级二级分区的安全迁移方案》摘要:针对Hive表无法直接修改分区层级的限制,本文提出"重建表+数据迁移"的4步解决方案:1)创建带二级分区的新表;2)迁移历史数据并为旧数据赋予默认分区值;3)完整性验证;4)无缝切换表名。方案包含动态分区配置、元数据管理等关键细节,并对比了4种替代方案的优缺点。文末提供完整Checklist和实战案例,50TB数据迁移后查询性能提升17倍。特别提醒:Hive分区结构创建后不可变更,预判业务需求设计分区层级至关重要。原创 2025-09-05 14:45:00 · 135 阅读 · 0 评论 -
Hive UDF开发实战:构建高性能JSON生成器
本文实现的JSON生成器UDF在以下方面具有显著优势:支持复杂嵌套数据结构提供灵活的类型转换策略实现生产级的错误处理性能优于内置解决方案未来可扩展方向:支持JSON Schema验证添加压缩输出功能集成Protobuf二进制格式实现流式处理接口通过自定义UDF开发,我们不仅解决了特定业务需求,更重要的是掌握了扩展Hive功能的通用方法论。这种能力在大数据工程实践中具有重要价值,能够帮助团队突破工具限制,构建更高效的数据处理流水线。往期精彩面试提问:数仓宽表是不是字段越多越好?原创 2025-03-27 08:54:01 · 1058 阅读 · 0 评论 -
面试提问:如何判断 Hive 表是内部表还是外部表?
此问题原本属于基础问题,但是偶尔被问到,求职者如果没有去准备,会很懵逼,在 Hive 中,可以通过以下方法判断表是内部表(Managed Table)还是。一个专注大于大数据、数据库、数据分析、相关领域的公众号,分享技术干货、学习资料、面试、职场经验和个人思考感悟,更重要的是让SQLBOY的SQL有质的飞越。【数据建模+业务建模,不一样的认知体系】(如果只懂数据建模而不懂业务建模,数仓体系认知是不全面的)了解表的类型对于数据的生命周期管理非常重要,特别是在删除表时,可能会影响到数据的存储。原创 2025-03-19 11:05:57 · 872 阅读 · 0 评论 -
HBase骚操作之数据加载方式BulkLoad
本文研究了一种HBase BulkLoad的入库方式,该方式利用HBase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。该方式配合MapReduce完成,高效便捷,而且不占用Region资源,增添负载,在大数据量写入时能极大的提高写入效率,并降低对Hbase节点的写入压力。HBase BulkLoad对于异构数据源的合并及大量数据一次性导入具有重要指导意义,相比HBase Put操作在性能上具有较高的优势原创 2020-03-17 23:08:35 · 7485 阅读 · 0 评论 -
一种不同网络环境下HBase数据备份及恢复方法
目 录0.引 言1.备份方法2.脚本的使用方法3 获取HDFS文件到本地系统4 数据恢复方法4.1 将将备份文件添加到hdfs中4.2 导入数据到HBase集群5.小 结0.引 言HBase在大数据处理中地位至关重要,有的公司会将HBase作为原始数据接入层,那么Hbase的数据备份就显得至关重要,那么如何备份呢?这里我们引入Hbase的一个API,hbase org.apache.hadoop.hbase.mapreduce.Export,该API可以实现同一集群.原创 2020-08-07 13:06:15 · 632 阅读 · 0 评论 -
利用shell脚本批量执行HBase相关命令操作方法
0 引言生产中经常需要对HBase进行建表、删除、插入数据等相关操作,本文总结了两种常用的方法供读者使用1 方法(1)方法1利用EOF#!/bin/bash#table_head='iot_phm_'if [ "$1" != "" ];then table_head=$1fi;CF='phm'if [ "$2" != "" ];then ...原创 2020-03-28 13:49:27 · 1437 阅读 · 0 评论 -
HBase骚操作之你不得不知的快照表
快照即是对某一时刻数据存储状态的保留,HBase中快照应用场景非常广泛,也是其核心概念之一。本文介绍了HBase的快照表的基本概念,分析了HBase各类数据备份的优缺点,研究了HBase快照的基本原理,并对HBase快照的基本操作进行了实战演练。通过本文你可以学到以下知识: 什么是快照 快照的作用、优势及基本原理 快照的主要应用场景 快照的基本操作原创 2020-03-14 00:26:38 · 2664 阅读 · 0 评论 -
HBase编程实战(JAVAAPI操作编写HBase工具类)
本文从工程实践着手,为读者提供了HBase编程完整流程,并对工作中常用的增、删、改、查、及API的使用封装成工具类,方便读者使用及学习。原创 2020-03-02 21:14:37 · 1932 阅读 · 1 评论 -
数据误删,跑路还是挽救?一种HBase数据误删后快速挽救方法
数据误删是一个老生常谈的问题,在不同的数据库中有不同的恢复策略,那么数据误删后如何第一时间抢救呢?以保证损失最小呢?。本文针对HBase数据库数据误删后进行分析,阐述了如果没有提前做好备份策略情况下,数据误删后,如何快速挽救的问题。文中分析了HBase中数据删除的基本原理,给出了如何在第一时间抢救方法,并进行了实验验证,读者可根据本文步骤进行尝试。原创 2020-04-06 21:30:22 · 598 阅读 · 0 评论 -
HBase数据块NotServingRegionException问题排查与解决
以上两个reigon在split时,子region的数据块已经并在meta表中更新上线提供正常服务,父region的数据块已删除,但是。和其中记录的region信息可以帮助我们定位问题所在,所以掌握meta表结构和相关存储规则是一个很有效的工具。导致对应的数据查询时,仍然通过父region检索数据,但是父region的数据已被删除,故无法成功检索。此外,在hbase web ui中,该表的region块存在。可以看到,该region在hdfs上对应的数据目录消失了。执行hbck -summary 发现。原创 2021-05-11 14:08:41 · 10768 阅读 · 0 评论 -
一文带你读懂HBase概念、架构及原理
Hbase在大数据领域中起着重要角色,在处理海量数据时候能达到秒级响应,很多公司都有自己的Hbase集群,在存储处理数据方面有着明显的优势。本文从Hbase的基本概念及架构原理进行深入解读,旨在帮助读者能从整体上认识Hbase,并对Hbase基本架构原理有个深入了解。(1)Hbase是什么(2)Hbase与关系型数据库之间的区别(3)Hbase的特点(4)Hbase架构及原理(5)Hbase读写流程(6)storefile合并过程(7)region切分过程适合场景。原创 2020-03-18 21:35:41 · 3734 阅读 · 1 评论 -
linux之find命令实战
0 引言 Linux find命令功能非常强大,往往在搜索定位时具有神奇的效果,可以简化查询操作流程,往往只需一条命令搞定。1 命令基本用法(1)语法格式find [路径] [选项] [操作](2)选型参数选项 含义 -name 根据文件名查找 -perm 根据文件权限查找 -prune 该选项可以排除某些查找目录 -user...原创 2020-03-15 19:45:25 · 2507 阅读 · 0 评论 -
一种CPU占用过高的故障定位分析方法
CPU占用过高是LINUX服务器出现常见的一种故障,也是程序员线上排查错误必须掌握的技能,我们经常需要找出相应的应用程序并快速地定位程序中的具体代码行数,本文将介绍一种CPU占用过高的一种处理思路,文中采用四步法进行定位,从应用程序的进程到具体应用程序的名字再到应用程序的线程最后定位到具体应用程序的行数,从整体到局部,最后定位到具体代码,为读者提供了一种排查故障的思路和方法。...原创 2020-03-08 18:57:27 · 14561 阅读 · 9 评论 -
如何在 Hive SQL 中处理复杂的数据类型?
Arrays:存储有序元素的集合,元素类型相同。Maps:存储键值对的集合,键和值可以是不同的数据类型。Structs:存储不同数据类型的元素,类似于对象或记录。原创 2025-01-05 14:10:56 · 1257 阅读 · 0 评论 -
Hive如何创建自定义函数(UDF)?
1.Hive 自带了一些函数比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。2当Hive提供的内置函数无法满足你的业务处理需要时此时就可以考虑使用用户自定义函数(UDF:user-defined function)。3.根据用户自定义函数类别分为以下三种①UDF一进一出②UDAF聚合函数多进一出,类似:count/max/min③UDTF炸裂函数一进多出,如:explode()4.官方文档地址5.编程步骤:① 继承Hive提供的类。原创 2024-12-29 09:00:00 · 1624 阅读 · 0 评论 -
一种HBase数据备份及恢复方法
HBase在大数据处理中地位至关重要,有的公司会将HBase作为原始数据接入层,那么Hbase的数据备份就显得至关重要,那么如何备份呢?这里我们引入Hbase的一个API,hbase org.apache.hadoop.hbase.mapreduce.Export,该API可以实现同一集群间的数据备份。对于实际使用场景中,我们往往还会遇到数据迁移的问题,即数据从一个集群拷贝到另一个集群中,当然数据迁移的方案有很多种,本文所讨论的是对于不同环境,不同IP场景下,数据从一种环境中的集群拷贝到另一环境的集群,两种原创 2020-02-26 21:00:31 · 3113 阅读 · 0 评论 -
数据同步工具Sqoop原理及优化
Ø如Sqoop在导出到Mysql时,使用4个Map任务,过程中有2个任务失败,此时MySQL中存储了另外两个Map任务导入的数据,这时业务刚好看到了这个报表数据,而开发工程师发现任务失败后,会调试问题并最终将全部数据正确的导入MySQL,那后面业务再次看报表数据,发现本次看到的数据与之前的不一致,这在生产环境是不允许的。导出数据时采用--input-null-string和--input-null-non-string两个参数。导入数据时采用--null-string和--null-non-string。原创 2024-10-14 20:41:11 · 1012 阅读 · 0 评论 -
数据同步工具Sqoop原理及场景优化
0123 切片逻辑3.1举例:3.2 Hive3.4 实验2:Sqoop通过--split-by指定切分的字段,--m设置mapper的数量。通过这两个参数分解生成m个where子句,进行分段查询。因此sqoop的split可以理解为where子句的切分。为了根据mapper的个数切分table,sqoop首先会执行一个sql,用于获取table中该字段的最小值和最大值,源码片段为生成的区间为[最小值,最小值+步长)[最小值步长,最小值+2。原创 2024-10-14 16:28:07 · 537 阅读 · 0 评论 -
Spark RDD 并行度与分区策略剖析 | 源码探索
从makeRDD的源码可以看出makeRDD底层调用的是parallelize(seq, numSlices),也就是说makeRDD是对parallelize的封装。默认情况下,Spark可以将一个作业切分多个任务后,发送给Executor节点并行计算,而分区数我们称之为并行度,并行度等于task总数,但task数并不等于某一时刻可以同时并行计算的任务数。指标体系该如何维护?读取文件数据时,数据是按照Hadoop文件读取的规则进行切片分区,而切片规则和数据读取的规则有些差异,具体Spark核心源码如下。原创 2024-10-09 08:00:00 · 902 阅读 · 0 评论 -
Oozie任务调度阻塞及内存优化方法
Oozie在执行过程中如果有多个fork产生并行任务的时候,这时会占用很多内存,如果机器的内存不够则会产生调度阻塞。或者是同时提交了多个Oozie任务,也会产生调度阻塞。本文针对上述问题,首先分析研究了Oozie的工作原理及Yarn的运行机制,并基于这两种机制原理的基础上,定位问题所在,实现了上述问题的优化,给出了具体的解决方案,最后对结果进行了验证。原创 2020-06-10 16:35:19 · 4446 阅读 · 1 评论 -
AZKABAN使用全方位总结
Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的Dependencies 来设置依赖关系。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。...原创 2022-03-01 14:32:19 · 2090 阅读 · 0 评论 -
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
windows下运行hadoop的程序报错java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.这是因为windows环境变量不兼容的原因。这里需要配置hadoop windows环境、JDK环境winutils.exe是在Windows系统 上需要的hadoop调试环境工具,里面包含一些在Windows系统下调试hadoop、spark所需要的基本的工具类.原创 2021-03-04 18:25:40 · 6088 阅读 · 2 评论 -
System times on machines may be out of sync. Check system time and time zones问题解决
错误如下:Diagnostic Messages for this Task:Container launch failed for container_e07_1614842970834_0146_02_000005 : org.apache.hadoop.yarn.exceptions.YarnException: Unauthorized request to start container.This token is expired. current time is 16206288052原创 2021-05-10 15:01:18 · 1307 阅读 · 0 评论 -
Sqoop export columns 参数使用
0 使用场景如果不使用 column 参数,就要默认Hive 表中的字段顺序和个数和MySQL表保持一致,如果字段顺序或个数不一致可以加 columns 参数进行导出控制。hive中的表字段数目和目标mysql表字段数目可以不一致,加 columns 参数 hive中的表字段和目标mysql表字段名称顺序可以调整,加 columns 参数1.Hive字段顺序和MySQL保持一致(1)添加 id字段(2)MySQL 中插入两条记录(3)Hive表中添加一条记录.....原创 2021-07-14 10:26:24 · 3778 阅读 · 2 评论 -
sqoop导出到MYSQL插入更新操作
1 导出控制参数1.参数--columns <col,col,col…>:要导出到表格的列。--direct:使用直接导出快速路径。--export-dir <dir>:用于导出的HDFS源路径。-m,--num-mappers <n>:使用n个mapper任务并行导出。--table <table-name>:要填充的表。--call <stored-proc-name>:存储过程调用。--update-key <co原创 2021-04-18 21:35:08 · 1871 阅读 · 1 评论 -
File does not exist: /user/anonymous/.staging/job_1628851608378_6064/报错问题解决
user/admin/.staging/job_1571397171638_0001/job_1571397171638_0001_1.jhist 所以为什么没有下发,这里面jhist,只是被引发的错误,它还不是根本的错误。看到上面错误,我们就可以判断,这是网络问题,然而网络无非是ip地址,防火墙,端口,hosts等。我们正常的hosts是这样的。在回头复盘想想,我们找不到jhist,跟我们的网络问题二者是很难找到关联的,所以大家在遇到问题的时候,一定多排查和思考,而不是看到一个错误,就以为是它的问题。原创 2021-08-16 15:17:33 · 2045 阅读 · 0 评论 -
SQOOP同步数据原理
1 SQOOP作用简单一句话概括就是sqoop是用来各个数据库之间进行数据迁移使用的。Sqoop作为数据传输的桥梁,通过定义MapReduce的InPutFormat和OutPutFormat来对接源存储和目的存储。2 基本原理(1)整个Sqoop的迁移过程,都会对应着一个MapReduce作业,实际上只有Map阶段,没有reduce阶段,而迁移大致分为5个部分,如下所示。「Initializer」:整个Sqoop迁移的初始化阶段,完成迁移前的准备工作,如连接数据源,创建临时表,添加依赖原创 2021-08-25 21:48:42 · 1358 阅读 · 5 评论 -
Sqoop同步任务‘ can not be represented as java.sql.Date
0 错误原因Caused by: java.sql.SQLException: Value '80236!B25CGSFBY-AL-B-5A7E423349804A31-2025000320250032394.001B010020250023653460002026-06-07 17:19:002020-06-08 17:19:001900-01-01 00:00:001900-01-01 00:00:001900-01-01 00:00:00S0200608171910137-100110.000.原创 2022-02-25 15:53:18 · 634 阅读 · 0 评论 -
Sqoop同步数据数据中存在换行符导致两边数据条数不一致问题解决(AVRO格式应用)
本文讲解了Sqoop同步数据中存在特殊换行符导致两边数据不一致问题的解决方法,同时对AVRO对解决这一类问题进行了重点讲解,包括AVRO语法格式、Hive建表语法等。原创 2022-05-03 17:55:03 · 1744 阅读 · 0 评论 -
如何设置ReduceTask并行度
如果 ReduceTask 数量过多,一个 ReduceTask 会产生一个结果文件,这样就会生成很多小文件,那么如果这些结果文件会作为下一个 Job 的输入,则会出现小文件需要进行合并的问题,而且启动和初始化ReduceTask 需要耗费资源。如果 ReduceTask 数量过少,这样一个 ReduceTask 就需要处理大量的数据,并且还有可能会出现数据倾斜的问题,使得整个查询耗时长。默认情况下,Hive 分配的 reducer 个数由下列参数决定:Hadoop MapReduce 程序中,Re原创 2021-09-08 15:43:46 · 838 阅读 · 1 评论 -
一种基于滑动平均的时间序列滤波方法 | Hive UDF 实现)
1 滑动平均的认识 移动平均法是用一组最近的实际数据值来预测未来一期或几期内公司产品的需求量、公司产能等的一种常用方法。移动平均法适用于即期预测。当产品需求既不快速增长也不快速下降,且不存在季节性因素时,移动平均法能有效地消除预测中的随机波动,是非常有用的。移动平均法根据预测时使用的各元素的权重不同 移动平均法是一种简单平滑预测技术,它的基本思想是:根据时间序列资料、逐项推移,依次计算包含一定项数的序时平均值,以反映长期趋势的方法。因此,当时间序列的数值由于受周期变动和随机波动的影响,起伏较大.原创 2021-03-12 17:52:18 · 1218 阅读 · 1 评论 -
Hive调优利器之explain详解
0 引言不懂hive中的explain,说明hive还没入门,学会explain,能够给我们工作中使用hive带来极大的便利!1 理论本节将介绍 explain 的用法及参数介绍HIVE提供了EXPLAIN命令来展示一个查询的执行计划,这个执行计划对于我们了解底层原理,hive 调优,排查数据倾斜等很有帮助使用语法如下:EXPLAIN[EXTENDED|CBO|AST|DEPENDENCY|AUTHORIZATION|LOCKS|VECTORIZATION|ANALYZE]..原创 2021-04-23 11:02:10 · 6061 阅读 · 3 评论
分享