当前位置: 首页 > wzjs >正文

网站建设怎么找客源那些公司做网站好

网站建设怎么找客源,那些公司做网站好,四川建设学习网,公司企业策划书模板摘要 数据倾斜是大数据处理中常见的性能瓶颈问题,本文提供可落地的解决方案。 一、数据倾斜的表现:分区负载不均的直观体现 现象描述:在分布式计算中,某个 / 某些分区承担远超其他分区的数据处理量,导致任务整体耗时…

摘要

数据倾斜是大数据处理中常见的性能瓶颈问题,本文提供可落地的解决方案。

一、数据倾斜的表现:分区负载不均的直观体现

现象描述:在分布式计算中,某个 / 某些分区承担远超其他分区的数据处理量,导致任务整体耗时被单个分区拖慢。
典型案例
在单词统计场景中,按首字母将结果分为a-pq-z两个文件。若a-p分区仅包含几百个单词,而q-z分区包含数百万单词,即发生严重数据倾斜。此时,处理q-z分区的 Reducer 会成为性能瓶颈,而其他 Reducer 处于空闲状态。

二、数据倾斜的核心成因分析

在 MapReduce/Hive 体系中,数据倾斜的本质是大量相同 Key 被分配至同一个 Reducer,常见诱因包括:

1. 数据类型不一致

场景:维度表与事实表 Join 时,字段类型隐式转换导致 Key 分布异常(如字符串与数值型混存)。

2. 大量 NULL 值的存在

场景 1:异常 NULL 值
如用户表中user_id为 NULL 的脏数据,导致所有 NULL 值在分组时汇聚到同一 Reducer。
优化思路:预处理过滤 NULL 值(WHERE user_id IS NOT NULL)。

场景 2:合法 NULL 值
如日志表中未登录用户的user_id为 NULL,需保留数据。
挑战:无法过滤,需特殊处理(见下文解决方案)。

3. 单表 Group By 操作

成因:分组键(如sex)分布不均,少量 Key 占据大量数据。

典型 SQL

SELECT sex, COUNT(*) FROM student GROUP BY sex;


sex='男'的数据量占比 90%,则处理该 Key 的 Reducer 负载显著高于其他 Reducer。

4. 多表 Join 操作

成因:Join 键分布不均,如班级表与学生表 Join 时,某班级(如class_id=10)包含上万学生,导致该 Key 对应的 Reducer 处理压力陡增。

三、单表 Group By 场景优化方案

方案 1:启用 Hive 参数实现负载均衡

通过以下参数开启 Map 端预聚合和分阶段处理:

-- 开启Map端聚合(默认true)
set hive.map.aggr = true;
-- 设置Map端聚合条目阈值
set hive.groupby.mapaggr.checkinterval = 100000;
-- 开启数据倾斜负载均衡(关键参数)
set hive.groupby.skewindata = true;

原理

  1. 第一阶段 MR:Map 输出随机分发至 Reducer,完成局部聚合(相同 Key 可能分散到不同 Reducer)。
  2. 第二阶段 MR:按真实 Key 重新分组,完成全局聚合。
    适用场景:聚合函数为COUNT/SUM且 Key 分布不均的场景。

方案 2:增加 Reducer 数量

通过调整mapreduce.job.reduces参数强制增加 Reducer 个数,分散单个 Key 的处理压力:

set mapreduce.job.reduces = 20; -- 视数据量调整

四、多表 Join 场景优化实践

场景复现:班级表与学生表 Join 的数据倾斜

表结构

student2(学生表):包含class_id(班级 ID)、name(姓名),其中class_id=10对应 6 条数据,其他班级数据量少。

class(班级表):包含id(班级 ID)、class_name(班级名称)。

优化前 SQL 与现象

-- 优化前查询
INSERT OVERWRITE LOCAL DIRECTORY '/home/hivedata/out/test01'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
SELECT s.class_id, s.name, c.class_name
FROM student2 s
JOIN class c ON s.class_id = c.id;

结果

class_id=10的 6 条数据集中在同一个 Reducer 输出文件(如000001_0),其他班级数据分布在不同文件,明显倾斜。

优化方案:大表打散 + 小表扩容

通过引入随机前缀(pin_id)将大表 Key 分散到多个 Reducer,同时扩容小表匹配前缀:

1. 大表打散(学生表)

class_id添加随机后缀(0/1/2):

CREATE TABLE student_test AS
SELECT *, CONCAT(class_id, '_', FLOOR(RAND()*10)%3) AS pin_id
FROM student2;

效果class_id=10的记录被随机分配到10_010_110_2三个 Key。

2. 小表扩容(班级表)

将每个id复制 3 份,分别添加后缀 0/1/2:

CREATE TABLE class_test AS
SELECT *, CONCAT(id, '_', '0') AS pin_id FROM class
UNION ALL
SELECT *, CONCAT(id, '_', '1') AS pin_id FROM class
UNION ALL
SELECT *, CONCAT(id, '_', '2') AS pin_id FROM class;
3. 重新 Join

基于pin_id进行连接,分散负载:

INSERT OVERWRITE LOCAL DIRECTORY '/home/hivedata/out/test02'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
SELECT s.class_id, s.name, c.class_name, c.pin_id,HASH(c.pin_id)%3 AS parNum -- 查看分区分布
FROM student_test s
JOIN class_test c ON s.pin_id = c.pin_id;

优化后结果

class_id=10的记录分散到parNum=0/1/2三个分区,Reducer 负载均衡(见下图):

plaintext

000000_0: class_id=10_0(2条)、11_2(1条)、12_1(1条)
000001_0: class_id=10_1(1条)
000002_0: class_id=10_2(3条)

五、总结:数据倾斜优化的核心思路

提前过滤:处理异常 NULL 值或无效数据。

打散重组:为倾斜 Key 添加随机前缀,拆分至多个 Reducer。

分阶段处理:通过两阶段 MR(如hive.groupby.skewindata)实现负载均衡。

优先 MapJoin:小表直接加载至内存,避免 Reducer 阶段(需设置hive.auto.convert.join=true)。

数据倾斜的优化需结合具体场景灵活选择方案,建议通过采样分析提前定位倾斜 Key,再针对性调整策略。

关键词:数据倾斜、Hive 优化、MapReduce、Group By、Join 优化
实战代码:本文示例代码可直接用于 Hive 环境调试,需根据实际表结构调整字段与路径。


文章转载自:

http://tbQYPT0x.kfbth.cn
http://4STkXeD8.kfbth.cn
http://GnbK6ySl.kfbth.cn
http://vEhGWT3P.kfbth.cn
http://no9Gfl0F.kfbth.cn
http://6Zi5Xp7x.kfbth.cn
http://v1QMe7uJ.kfbth.cn
http://J1SP91u7.kfbth.cn
http://vVEn36C9.kfbth.cn
http://bjgjur13.kfbth.cn
http://wI2v9GUM.kfbth.cn
http://gr0PpFMD.kfbth.cn
http://DnJba4pV.kfbth.cn
http://4Gw3kFYq.kfbth.cn
http://4Xhhp78l.kfbth.cn
http://bQpV6fl7.kfbth.cn
http://hpgssLm7.kfbth.cn
http://1CXSFZIZ.kfbth.cn
http://tgxqOOfQ.kfbth.cn
http://IVtkddZH.kfbth.cn
http://LpViOo5m.kfbth.cn
http://qFDGnYrQ.kfbth.cn
http://Mcj8KU8d.kfbth.cn
http://WqcxWZHx.kfbth.cn
http://uaKuxwFV.kfbth.cn
http://uAul3j1w.kfbth.cn
http://v2mY1KVk.kfbth.cn
http://oUxdDsQL.kfbth.cn
http://lFvcsCOk.kfbth.cn
http://VWZjmehC.kfbth.cn
http://www.dtcms.com/wzjs/692197.html

相关文章:

  • 网站建设与管理维护 李建青惠州的企业网站建设
  • 国外室内设计网站推荐上海公司做网站的
  • 做国外网站收款怎么收wordpress小说文章发布插件
  • 韶关做网站的公司做直播网站赚钱吗
  • 天津h5模板建站目前最主流的网页制作软件是
  • 外贸联系网站保险公司网站开发
  • 网站报404错误怎么解决网站怎么 备案
  • 男女做那事视频免费网站修改网站照片需要怎么做
  • 网站做端口是什么网站建设和运营
  • 人力资源公司网站模板下载怎么创网站赚钱吗
  • 如皋网站定制做网络推广的网站
  • 装饰公司取名长沙谷歌优化
  • 哪些网站可以做移动端模板企管宝app下载
  • jsp做网站毕业设计透明主题wordpress
  • 博达 网站群建设公司域名费用每年多少钱
  • 政务网站建设云计算中心旅游网站源码 wordpress模板 v1.0
  • 青岛做公司网站的公司制作网页需要什么技术
  • 如何把自己写的html变成网站漯河网页设计
  • 中建二局官网seo评测论坛
  • 北京做网站网站数据库有什么用
  • 企腾做的网站怎么样电子商务公司经营范围有哪些
  • 租网站服务器网站制作时
  • 微信网站建设塞尼铁克免费flash网站源码
  • 公司创建一个网站多少钱对勾网机械加工订单
  • 青海西宁制作网站企业wordpress二次开发教程种子
  • 一键生成作文的网站做棋盘游戏辅助的网站
  • 内蒙古中汇建设有限公司网站设计网站专题页包括那些项目
  • 网站开发属于什么类型软件php是做网站的吗
  • 潜江网站设计百度小程序 wordpress
  • 学校网站开发背景wordpress 加入js