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

网站建设实训总结范文建设网站需要花费什么费用

网站建设实训总结范文,建设网站需要花费什么费用,手机app制作开发公司,南宁一站网网络技术有限公司Hive 数据倾斜是分布式计算中常见的问题,通常表现为某些 Reduce 任务处理的数据量远大于其他任务,导致任务执行时间过长甚至失败。以下是优化数据倾斜的常见方法: 1. 定位倾斜原因 检查 SQL 中的 GROUP BY、JOIN、DISTINCT 等操作&#xff0…

Hive 数据倾斜是分布式计算中常见的问题,通常表现为某些 Reduce 任务处理的数据量远大于其他任务,导致任务执行时间过长甚至失败。以下是优化数据倾斜的常见方法:


1. 定位倾斜原因

  • 检查 SQL 中的 GROUP BYJOINDISTINCT 等操作,确定倾斜的字段。
  • 使用 SELECT key, COUNT(*) FROM table GROUP BY key ORDER BY COUNT(*) DESC LIMIT 10; 找到热点 Key。
  • 查看任务日志,定位卡在 99% 的 Reduce 任务。

2. 参数调优

(1) Map 端聚合
-- 启用 Map 端聚合(减少数据倾斜影响)
SET hive.map.aggr = true; 
-- 预聚合的条数
SET hive.groupby.mapaggr.checkinterval = 100000; 
(2) 启用负载均衡
-- 对 GROUP BY 操作启用负载均衡(两次聚合)
SET hive.groupby.skewindata = true;
  • 第一次 Map 端随机分发数据,进行局部聚合。
  • 第二次根据实际 Key 分发,完成最终聚合。
(3) 优化 Join 操作
-- 自动处理 Join 倾斜(Hive 0.10+)
SET hive.optimize.skewjoin = true;
-- 设置倾斜阈值(默认 100000)
SET hive.skewjoin.key = 100000;
  • 当某个 Key 的记录数超过阈值时,Hive 会将该 Key 的数据随机分发到多个 Reduce 任务。

3. SQL 优化

(1) 过滤无效数据
  • 若某个 Key(如 NULL)是倾斜源,直接过滤或赋予随机值:
SELECT * 
FROM table 
WHERE key IS NOT NULL;-- 或对 NULL 值随机打散
SELECT COALESCE(key, CAST(RAND() * 100 AS INT)) AS new_key,value 
FROM table;
(2) 拆分热点 Key
  • 大 Key 单独处理:将倾斜的 Key 与其他 Key 分开计算,最后合并结果。
-- 示例:处理 JOIN 中的倾斜 Key
SELECT * 
FROM (-- 处理非热点 KeySELECT a.*, b.value FROM table_a a JOIN table_b b ON a.key = b.key WHERE a.key != 'hot_key'UNION ALL-- 单独处理热点 KeySELECT a.*, b.value FROM table_a a JOIN table_b b ON a.key = 'hot_key' AND a.key = b.key
) tmp;
(3) Map Join 处理小表
  • 若小表可加载到内存,使用 Map Join 避免 Reduce 阶段:
SET hive.auto.convert.join = true; 
SET hive.mapjoin.smalltable.filesize = 25000000; -- 小表阈值(默认 25MB)SELECT /*+ MAPJOIN(b) */ a.key, b.value 
FROM big_table a 
JOIN small_table b 
ON a.key = b.key;
(4) 随机数打散 Key
  • 在 Join 或 Group By 前对热点 Key 添加随机前缀/后缀,分散数据:
-- 示例:对热点 Key 添加随机前缀
SELECT key,COUNT(*) 
FROM (SELECT CASE WHEN key = 'hot_key' THEN CONCAT(key, '_', CAST(RAND() * 10 AS INT)) ELSE key END AS keyFROM table
) tmp 
GROUP BY key;

4. 调整 Reduce 数量

  • 手动控制 Reduce 数量:
SET mapreduce.job.reduces = 100; -- 根据数据量调整
  • 或自动调整:
SET hive.exec.reducers.bytes.per.reducer = 512000000; -- 每个 Reduce 处理的数据量(默认 512MB)

5. 数据预处理

  • ETL 阶段预处理:将倾斜 Key 的数据均匀分布(如添加随机前缀,写入中间表)。
  • 使用中间表:对高频 Key 的数据进行分桶或分区。

6. 其他技巧

  • 使用 DISTRIBUTE BY + SORT BY:强制分散数据。
SELECT key, value 
FROM table 
DISTRIBUTE BY CAST(RAND() * 100 AS INT) SORT BY key;
  • 避免 COUNT(DISTINCT):改用 GROUP BY 替代。
-- 低效写法
SELECT COUNT(DISTINCT user_id) FROM logs;-- 优化写法
SELECT COUNT(*) FROM (SELECT user_id FROM logs GROUP BY user_id) tmp;

总结

数据倾斜需根据具体场景选择优化方案。通常需要结合 参数调优SQL 逻辑优化数据预处理 综合解决。对于高频 Key,优先考虑拆分或打散;对于小表 Join,使用 Map Join;对于无效数据,提前过滤或打散。

http://www.dtcms.com/wzjs/790362.html

相关文章:

  • 山西高端建设网站网站浏览历史怎么查看
  • iis7.5 网站配置网站建设不完整什么意思
  • 直播网站开发公司深圳网络推广的公司
  • 产品通过网站做营销哔哩哔哩网页版打不开
  • 衡阳网站优化免费咨询win7优化大师免安装版
  • 一些设计网站烟台装修公司网站建设
  • 美食网站建设需求分析甘肃省住房和建设厅网站首页
  • 深圳定制网站制作咨询电话柳州市住房和城乡建设局网站首页
  • 大连网站建设哪家好app公司组织结构图
  • 织梦网站地图模板下载公司主页网站怎么做
  • 做电影资源网站有哪些内容网站seo服务
  • 做购物网站之前做些什么手机上的html编辑器
  • 百度做网站续费费用苏州保洁
  • 网站怎么做子网页西宁网络公司哪家好
  • 网站建设协议书怎么写it外包项目做完了就解散了吗
  • 英文购物网站模板推广途径
  • 为什么上不了建设银行个人网站建筑公司愿景口号大全
  • vue做单页面网站谷歌引擎搜索入口
  • 免费影视剧网站网络推广专员的岗位职责是
  • 深圳做网站企业科技企业网站模板
  • 云主机怎么上传网站线上网站设计
  • 卖域名的网站要怎么做做业务不花钱的网站有哪些
  • 资源网站如何做建筑人才网与建筑英才网
  • 网站 内容 制作宁德市人口
  • 网站建设赚钱项目1微信网站怎么建设
  • 买域名的网站鑫瀚通网站建设
  • 微名片网站怎么做深圳市住房和建设局logo
  • 邢台做网站公司排名怎么把网站地图上传
  • 学院网站建设时间控制变更申请表产品外观设计收费标准
  • 长沙县营销型网站建设选哪家石家庄网站怎么建设