hive分区分桶、数据倾斜总结

一、hive的基本概念

hive是一个构建在hadoop上的数据仓库工具,可以将结构化的数据文件映射为一张数据库表并提供数据查询功能

二、hive的特点

(1)数据是存储在hdfs上

(2)底层是将sql转换为MapReduce任务进行计算

(3)执行程序是运行在yarn上

三、hive表数据如何修改

(1)可以删除原表,然后新建一个与原表的表名、表结构相同的表,然后将需要修改的值更改后重新复制到新表;

1) 创建一个新表,其结构与原表相同

sql 复制代码
CREATE TABLE tmp_table ...;

2) 使用INSERT语句,将原表中的数据复制到新表,并对需要修改的值进行更改

sql 复制代码
INSERT INTO TABLE tmp_table
SELECT col1,col2,CASE WHEN col3=修改值 THEN 新值 ELSE col3 END,col4,...
FROM src_table;

3) 删除原表

sql 复制代码
DROP TABLE src_table;

4) 将新表重命名为原表的名字

sql 复制代码
ALTER TABLE tmp_table RENAME TO src_table;
(2)也可以使用insert overwrite语句,结合where条件对需要修改的值更改过后,再将原表数据覆盖回去。
sql 复制代码
INSERT OVERWRITE TABLE src_table
SELECT col1,col2,col3,col4,... FROM src_table WHERE col3!=修改值
UNION ALL
SELECT col1原来值,col2原来值,col3新值,col4原来值,...;

四、hive分区表和桶表的区别

区别:从表现形式上来看:分区表是一个目录,而分桶表是一个文件;

从数量上来看:分区表的分区个数是可以增长的,而分桶表一旦指定完之后就不能增长;

从依据上来看:分区表需要手动添加分区,分区时依据的是表外字段,而分桶表是按照表内字段

从数据分布上来看:分区表在根据分区字段进行分区时可能会导致数据分布不均的情况,而分桶表是根据 hash值进行划分的,数据分布比较均匀。

五、如何给hive表增加一个分区

增加分区:通过alter修改表信息,然后在表名后面通过add添加一个经过判断后不存在的分区

删除分区同上,是通过drop删除一个经过判断后存在的分区

六、hive的数据倾斜

数据倾斜

hive的数据倾斜通常出现在MapReduce处理任务时,在不同节点并行处理数据的过程中,由于某一节点处理的数据远超其它节点的数据时,会导致此节点处理数据的时间远超出其它节点的时间甚至导致任务失败

原因及解决方案

(1)表关联时,关联字段null值过多;可以将空字段与非空字段分开检索,然后用union all合并查询结果,也可以使用外连接关联两表,然后对关联字段为的进行赋值,使其不为空;

(2)关联字段的数据类型不同;把不同的数据类型转为相同的;

(3)group by的维度过小,导致reduce处理一个分区的数据远多于另一个分区的数据;可以开

启Map端的聚合操作并设置groupby参数。

相关推荐
石像鬼₧魂石5 小时前
钢结构ERP管理系统 —— 玻璃拟态 · 单文件HTML(系统为开发测试虚拟数据)
大数据·数据仓库·制造·数据库开发·数据库架构
牛奶咖啡131 天前
大数据Hadoop运维应用实践——双NameNode高可用Hadoop集群架构(上)
hadoop·高可用hadoop集群搭建·给服务器做免密信任·修改服务器主机名称·服务器本地配置主机名与ip映射·服务器配置jdk环境·服务器安装zooker
jjjava2.02 天前
SpringMVC入门指南:从零掌握核心要点
数据仓库·hive·hadoop
Jay_Franklin2 天前
Python 数据处理工作流:marimo、PyCharm 与数据存储
开发语言·数据仓库·ide·python·pycharm·数据分析·开源
ljs6482739513 天前
Hadoop集群部署常见问题
大数据·hadoop·分布式
TTBIGDATA4 天前
【Ambari Plus】14.Hue 安装
大数据·hadoop·ambari·hdp·hue·cdh·bigtop
RestCloud4 天前
借助ETL工具,实现AI智能体+数据的落地
数据仓库·人工智能·sql·etl·etlcloud·数据集成平台·java脚本
AllData公司负责人4 天前
数据库同步平台|AIIData数据中台实现OceanBase、达梦数据库、OpenGauss、人大金仓、Hive、TDengine 一键接入Doris
大数据·数据库·hive·mysql·oceanbase·tdengine
2501_942389554 天前
特斯拉的车辆摄像头每四天为AI训练集采集的数据量
人工智能·hadoop·zookeeper·oracle·时序数据库·memcache
AllData公司负责人4 天前
数据同步平台|AIIData数据中台实现MySQL、Hive、Kafka 一键接入Doris
大数据·数据库·hive·mysql·kafka·实时同步