
Hive 实战技术
文章平均质量分 82
Hive实战经验分享。分享Hive实战中遇到的问题及经验
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
莫叫石榴姐
10多年IT经验,数仓及SQL领域教练及专家,曾作为主面试官,面试多个候选人
展开
-
Hive UDF开发实战:构建高性能JSON生成器
本文实现的JSON生成器UDF在以下方面具有显著优势:支持复杂嵌套数据结构提供灵活的类型转换策略实现生产级的错误处理性能优于内置解决方案未来可扩展方向:支持JSON Schema验证添加压缩输出功能集成Protobuf二进制格式实现流式处理接口通过自定义UDF开发,我们不仅解决了特定业务需求,更重要的是掌握了扩展Hive功能的通用方法论。这种能力在大数据工程实践中具有重要价值,能够帮助团队突破工具限制,构建更高效的数据处理流水线。往期精彩面试提问:数仓宽表是不是字段越多越好?原创 2025-03-27 08:54:01 · 902 阅读 · 0 评论 -
面试提问:如何判断 Hive 表是内部表还是外部表?
此问题原本属于基础问题,但是偶尔被问到,求职者如果没有去准备,会很懵逼,在 Hive 中,可以通过以下方法判断表是内部表(Managed Table)还是。一个专注大于大数据、数据库、数据分析、相关领域的公众号,分享技术干货、学习资料、面试、职场经验和个人思考感悟,更重要的是让SQLBOY的SQL有质的飞越。【数据建模+业务建模,不一样的认知体系】(如果只懂数据建模而不懂业务建模,数仓体系认知是不全面的)了解表的类型对于数据的生命周期管理非常重要,特别是在删除表时,可能会影响到数据的存储。原创 2025-03-19 11:05:57 · 692 阅读 · 0 评论 -
HBase骚操作之数据加载方式BulkLoad
本文研究了一种HBase BulkLoad的入库方式,该方式利用HBase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。该方式配合MapReduce完成,高效便捷,而且不占用Region资源,增添负载,在大数据量写入时能极大的提高写入效率,并降低对Hbase节点的写入压力。HBase BulkLoad对于异构数据源的合并及大量数据一次性导入具有重要指导意义,相比HBase Put操作在性能上具有较高的优势原创 2020-03-17 23:08:35 · 7289 阅读 · 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 · 561 阅读 · 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 · 1330 阅读 · 0 评论 -
HBase骚操作之你不得不知的快照表
快照即是对某一时刻数据存储状态的保留,HBase中快照应用场景非常广泛,也是其核心概念之一。本文介绍了HBase的快照表的基本概念,分析了HBase各类数据备份的优缺点,研究了HBase快照的基本原理,并对HBase快照的基本操作进行了实战演练。通过本文你可以学到以下知识: 什么是快照 快照的作用、优势及基本原理 快照的主要应用场景 快照的基本操作原创 2020-03-14 00:26:38 · 2517 阅读 · 0 评论 -
HBase编程实战(JAVAAPI操作编写HBase工具类)
本文从工程实践着手,为读者提供了HBase编程完整流程,并对工作中常用的增、删、改、查、及API的使用封装成工具类,方便读者使用及学习。原创 2020-03-02 21:14:37 · 1840 阅读 · 1 评论 -
数据误删,跑路还是挽救?一种HBase数据误删后快速挽救方法
数据误删是一个老生常谈的问题,在不同的数据库中有不同的恢复策略,那么数据误删后如何第一时间抢救呢?以保证损失最小呢?。本文针对HBase数据库数据误删后进行分析,阐述了如果没有提前做好备份策略情况下,数据误删后,如何快速挽救的问题。文中分析了HBase中数据删除的基本原理,给出了如何在第一时间抢救方法,并进行了实验验证,读者可根据本文步骤进行尝试。原创 2020-04-06 21:30:22 · 536 阅读 · 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 · 10446 阅读 · 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 · 3499 阅读 · 1 评论 -
linux之find命令实战
0 引言 Linux find命令功能非常强大,往往在搜索定位时具有神奇的效果,可以简化查询操作流程,往往只需一条命令搞定。1 命令基本用法(1)语法格式find [路径] [选项] [操作](2)选型参数选项 含义 -name 根据文件名查找 -perm 根据文件权限查找 -prune 该选项可以排除某些查找目录 -user...原创 2020-03-15 19:45:25 · 2443 阅读 · 0 评论 -
一种CPU占用过高的故障定位分析方法
CPU占用过高是LINUX服务器出现常见的一种故障,也是程序员线上排查错误必须掌握的技能,我们经常需要找出相应的应用程序并快速地定位程序中的具体代码行数,本文将介绍一种CPU占用过高的一种处理思路,文中采用四步法进行定位,从应用程序的进程到具体应用程序的名字再到应用程序的线程最后定位到具体应用程序的行数,从整体到局部,最后定位到具体代码,为读者提供了一种排查故障的思路和方法。...原创 2020-03-08 18:57:27 · 14358 阅读 · 9 评论 -
如何在 Hive SQL 中处理复杂的数据类型?
Arrays:存储有序元素的集合,元素类型相同。Maps:存储键值对的集合,键和值可以是不同的数据类型。Structs:存储不同数据类型的元素,类似于对象或记录。原创 2025-01-05 14:10:56 · 1125 阅读 · 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 · 1369 阅读 · 0 评论 -
一种HBase数据备份及恢复方法
HBase在大数据处理中地位至关重要,有的公司会将HBase作为原始数据接入层,那么Hbase的数据备份就显得至关重要,那么如何备份呢?这里我们引入Hbase的一个API,hbase org.apache.hadoop.hbase.mapreduce.Export,该API可以实现同一集群间的数据备份。对于实际使用场景中,我们往往还会遇到数据迁移的问题,即数据从一个集群拷贝到另一个集群中,当然数据迁移的方案有很多种,本文所讨论的是对于不同环境,不同IP场景下,数据从一种环境中的集群拷贝到另一环境的集群,两种原创 2020-02-26 21:00:31 · 2995 阅读 · 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 · 827 阅读 · 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 · 344 阅读 · 0 评论 -
Spark RDD 并行度与分区策略剖析 | 源码探索
从makeRDD的源码可以看出makeRDD底层调用的是parallelize(seq, numSlices),也就是说makeRDD是对parallelize的封装。默认情况下,Spark可以将一个作业切分多个任务后,发送给Executor节点并行计算,而分区数我们称之为并行度,并行度等于task总数,但task数并不等于某一时刻可以同时并行计算的任务数。指标体系该如何维护?读取文件数据时,数据是按照Hadoop文件读取的规则进行切片分区,而切片规则和数据读取的规则有些差异,具体Spark核心源码如下。原创 2024-10-09 08:00:00 · 722 阅读 · 0 评论 -
Oozie任务调度阻塞及内存优化方法
Oozie在执行过程中如果有多个fork产生并行任务的时候,这时会占用很多内存,如果机器的内存不够则会产生调度阻塞。或者是同时提交了多个Oozie任务,也会产生调度阻塞。本文针对上述问题,首先分析研究了Oozie的工作原理及Yarn的运行机制,并基于这两种机制原理的基础上,定位问题所在,实现了上述问题的优化,给出了具体的解决方案,最后对结果进行了验证。原创 2020-06-10 16:35:19 · 4307 阅读 · 1 评论 -
AZKABAN使用全方位总结
Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的Dependencies 来设置依赖关系。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。...原创 2022-03-01 14:32:19 · 1980 阅读 · 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 · 5880 阅读 · 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 · 1197 阅读 · 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 · 3643 阅读 · 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 · 1775 阅读 · 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 · 1951 阅读 · 0 评论 -
SQOOP同步数据原理
1 SQOOP作用简单一句话概括就是sqoop是用来各个数据库之间进行数据迁移使用的。Sqoop作为数据传输的桥梁,通过定义MapReduce的InPutFormat和OutPutFormat来对接源存储和目的存储。2 基本原理(1)整个Sqoop的迁移过程,都会对应着一个MapReduce作业,实际上只有Map阶段,没有reduce阶段,而迁移大致分为5个部分,如下所示。「Initializer」:整个Sqoop迁移的初始化阶段,完成迁移前的准备工作,如连接数据源,创建临时表,添加依赖原创 2021-08-25 21:48:42 · 1244 阅读 · 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 · 593 阅读 · 0 评论 -
Sqoop同步数据数据中存在换行符导致两边数据条数不一致问题解决(AVRO格式应用)
本文讲解了Sqoop同步数据中存在特殊换行符导致两边数据不一致问题的解决方法,同时对AVRO对解决这一类问题进行了重点讲解,包括AVRO语法格式、Hive建表语法等。原创 2022-05-03 17:55:03 · 1643 阅读 · 0 评论 -
如何设置ReduceTask并行度
如果 ReduceTask 数量过多,一个 ReduceTask 会产生一个结果文件,这样就会生成很多小文件,那么如果这些结果文件会作为下一个 Job 的输入,则会出现小文件需要进行合并的问题,而且启动和初始化ReduceTask 需要耗费资源。如果 ReduceTask 数量过少,这样一个 ReduceTask 就需要处理大量的数据,并且还有可能会出现数据倾斜的问题,使得整个查询耗时长。默认情况下,Hive 分配的 reducer 个数由下列参数决定:Hadoop MapReduce 程序中,Re原创 2021-09-08 15:43:46 · 770 阅读 · 1 评论 -
一种基于滑动平均的时间序列滤波方法 | Hive UDF 实现)
1 滑动平均的认识 移动平均法是用一组最近的实际数据值来预测未来一期或几期内公司产品的需求量、公司产能等的一种常用方法。移动平均法适用于即期预测。当产品需求既不快速增长也不快速下降,且不存在季节性因素时,移动平均法能有效地消除预测中的随机波动,是非常有用的。移动平均法根据预测时使用的各元素的权重不同 移动平均法是一种简单平滑预测技术,它的基本思想是:根据时间序列资料、逐项推移,依次计算包含一定项数的序时平均值,以反映长期趋势的方法。因此,当时间序列的数值由于受周期变动和随机波动的影响,起伏较大.原创 2021-03-12 17:52:18 · 1151 阅读 · 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 · 5966 阅读 · 3 评论 -
Beeline – 命令行参数详解
Beeline Shell 在嵌入式模式和远程模式下均可工作。在嵌入式模式下,它运行嵌入式 Hive(类似于Hive CLI),而远程模式用于通过 Thrift 连接到单独的 HiveServer2 进程。从Hive 0.14开始,当 Beeline 与 HiveServer2 一起使用时,它还会打印 HiveServer2 的日志消息,以查询执行到 STDERR 的查询。建议将远程 HiveServer2 模式用于生产环境,因为它更安全并且不需要为用户授予直接 HDFS /元存储访问权限。Warnin原创 2021-04-01 18:15:08 · 11035 阅读 · 0 评论 -
Sqoop生产常见问题及优化经验总结
0 引 言sqoop作为一种重要的数据同步工具,在大数据中具有重要地位。本文对Sqoop生产中遇到的常见问题进行总结并给出具体的解决方案。1 生产常见的问题(1)Sqoop 空值问题 Hive中的Null在底层是以“\N”来存储,而MySQL中的Null在底层就是Null,这就导致了两边同步数据时存储不一致问题。Sqoop在同步的时候应该严格保证两端的数据格式、数据类型一致,否则会带来异常。 方案 1:依赖自身参数 1)导出数据时采用--input-null-string...原创 2020-10-21 15:39:31 · 3140 阅读 · 2 评论 -
Hive优化实战经验 | 一文总结完
目录1 表层面1.1 利用分区表优化1.2 利用分桶表优化1.3 选择合适的文件存储格式1.4 选择合适的压缩格式2 HQL层面优化2.1 执行计划2.1 列、行、分区裁剪2.2 谓词下推2.3 合并小文件2.4 合理设置MapTask并行度2.5 合理设置ReduceTask并行度2.6 Join优化2.7 CBO优化2.8 Group By优化2.9 Order By优化2.10 Count Distinct 优化2.11 怎样写i原创 2020-12-29 15:16:55 · 1428 阅读 · 0 评论 -
Spark读取hive表数据并将处理的数据写入HBase
package com.nbdpt.work4_hive2hbase2019import com.nbdpt.util.BaseUtilimport org.apache.hadoop.hbase.client.{ConnectionFactory, Get, Put}import org.apache.hadoop.hbase.io.ImmutableBytesWritableimport org.apache.hadoop.hbase.mapreduce.TableOutputFormat.原创 2021-04-25 15:33:13 · 1320 阅读 · 1 评论 -
Hive on HBase表字段数超过默认限制,select查询报错
0 报错内容建表可以成功,查询映射表的时候报错。具体如下:1 原因分析根本原因:hive on hbase 中默认限制字段的字符数是4000对于4000个字符,hive Metastore中SERDE_PARAMS表中PARAM_VALUE字段的字符限制是此问题的根本原因。此限制可防止Hive创建具有高列数的表,最终导致desc或select * from失败并出现上述错误。2 解决方法解决方法:通过在hive Metastore中执行以下操作可以解决此问题alter .原创 2021-07-05 16:02:55 · 1160 阅读 · 0 评论 -
一个HQL语句是如何转换成MR任务的?
可 以 知 道 我 们 执 行 HQL 主 要 依 赖 于 $HIVE_HOME/bin/hive 和 $HIVE_HOME/bin/hivesever2 两种脚本来实现提交 HQL,而在这两个脚本中,最终启动的 JAVA 程序的主类为,所以其实 Hive 程序的入口就是“CliDriver”这个类。(2)服务端接收到客户端的服务请求会启动一个。该类主要完成以下功能1)解析客户端的-e,-f等参数2)定义标准的输入输出流3)按照;切分HQL语句。可以执行以分号隔开的多个SQL语句,按顺序执行。原创 2021-08-22 16:17:58 · 1432 阅读 · 0 评论 -
MR中如何控制map的数量
hadooop提供了一个设置map个数的参数mapred.map.tasks,我们可以通过这个参数来控制map的个数。但是通过这种方式设置map的个数,并不是每次都有效的。原因是mapred.map.tasks只是一个hadoop的参考数值,最终map的个数,还取决于其他的因素。为了方便介绍,先来看几个名词:block_size : hdfs的文件块大小,默认为128M,可以通过参数dfs.block.size设置 total_size : 输入文件整体的大小 input_file_num :原创 2021-09-08 15:07:28 · 1422 阅读 · 0 评论 -
Hive实战技术:使用TextFile格式可以直接使用gzip或bzip2压缩
数据压缩存储可以将使用Gzip或Bzip2压缩的文本文件直接导入存储为TextFile的表中。压缩将被自动检测到,并且文件将在查询执行期间实时解压缩. 例如: CREATE TABLE raw (line STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'; LOAD DATA LOCAL INPATH '/tmp/weblogs/20090603-acc...原创 2021-11-29 11:00:38 · 2838 阅读 · 0 评论 -
Hive任务执行报错:FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
Hive任务执行报错:FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask原创 2022-06-29 16:27:48 · 8354 阅读 · 2 评论