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

用户画像系列——Spark任务调优实践

在画像标签的加工和写入hbase中,我们采用了spark来快速进行处理和写入。但是在实际线上运行的过程中,仍然遇到了不少问题,下面来总结下遇到的一些问题

1.数据倾斜问题

其实spark 数据倾斜思路和hive、mapreduce 数据倾斜思路处理类似,先看运行的任务,找到spark监控,active job -> stage -> task, 最终我们就能找到运行的task,可以看一些运行时长远超其他的task,同时处理的数据量也远超其他task,这种情况就是有数据倾斜了。

然后我们就可以对我们自己的数据进行分析:

可以很明显的看到前两条数据要比后面的其他数据量级要大,因此可以看出来存在数据倾斜。

数据倾斜的思路也是比较简单:

(1)可以在id前加随机前缀,先统计一次,然后去掉前缀再统计,这样就能解决数据倾斜问题了。

(2)或者有一些认为这种数据是脏数据可以直接过滤,丢弃掉也可以,需要根据业务场景进行判断。

2.任务处理很慢

一般这种情况,需要我们去看我们运行慢的任务,如果不存在数据倾斜问题,那就需要去分析运行的jstack 堆栈信息。(多观察刷新几次 观察堆栈信息,看看是不是一直在执行某个方法,说明一直在这里执行)

之前遇到代码死循环(这个明显是代码写错了),一直卡在某个方法里出不来,也是通过查看堆栈信息发现的。

再有的优化手段:textfile 格式 优化成 parquet 格式(parquet格式⽀持⾃动split,当单个文件过大时spark读进来之后可以支持自动split),但是texfile是不支持的。

3.spark oom 问题

(1)driver 端 oom:spark collect 把大数据拉到了driver 端

(2)excutor 端 oom: mapPartitions 提供给了我们更加强大的数据控制力,怎么理解呢?我们可以一次拿到一个分区的数据,那么我们就可以对一个分区的数据进行统一处理,会加大内存的开销,可能会导致 oom 问题也是需要注意的

当然大家,也可以继续看看前面写的用户画像系列文章

http://www.lryc.cn/news/412458.html

相关文章:

  • 前端面试宝典【HTML篇】【4】
  • 【UbuntuDebian安装MySQL】在线安装MySQL8
  • PDF翻译神器:这四款可以实现一键搞定,留学党必备!
  • 精心准备的高水平的博客【点评语】,来抄啊!
  • gitlab汉化
  • SSH访问控制:精确管理你的服务器门户
  • Java中的SSL/TLS安全通信实现
  • 2959. 关闭分部的可行集合数目
  • 第十九天培训笔记
  • 初学者编程指南:方法与资源推荐
  • 【SpringBoot】数据验证之URL参数校验
  • 目标检测 | yolov2/yolo9000 原理和介绍
  • 基于Raft算法的分布式KV数据库:一、开篇
  • react-日期选择器封装
  • 【C++题解】1022. 百钱百鸡问题
  • 计算机毕业设计选题推荐-二手闲置交易系统-Java/Python项目实战
  • AI Agents(智能代理)教程:如何创建信息检索聊天机器人
  • Linux——管理本地用户和组(详细介绍了Linux中用户和组的概念及用法)
  • Flink-StarRocks详解:第三部分StarRocks分区分桶(第53天)
  • 8G内存的Mac够用吗 ?苹果电脑内存满了怎么清理?可以有效地管理和优化你的Mac电脑内存,确保设备运行流畅
  • 【LabVIEW学习篇 - 10】:属性、调用节点
  • 如何在数据埋点中发现和修复数据上报逻辑错误
  • 程序员面试“八股文”:助力成长还是应试枷锁?
  • 强化学习-alphazero 算法理论
  • 使用 Rough.js 创建动态水平条形图
  • Python教程(十):面向对象编程(OOP)
  • CTFHUB-文件上传-文件头检查
  • c语言数组与指针,字符串与指针,指向函数的指针,malloca动态内存分配
  • 代码随想录算法训练营day30 | 452. 用最少数量的箭引爆气球 、435. 无重叠区间、763.划分字母区间
  • 如何手动修复DLL丢失?2种手动修复dll文件方法