前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >原创|Spark千亿级数据去重,性能优化踩坑之路

原创|Spark千亿级数据去重,性能优化踩坑之路

作者头像
小晨说数据
发布于 2022-11-18 01:45:39
发布于 2022-11-18 01:45:39
1.2K0
举报
文章被收录于专栏:小晨讲Flink小晨讲Flink

好久没有更新原创了

大家好,我是狗哥,今天给大家写一点干货,这次咱们就从0-1把思路给大家讲一下,这也是我同事在数据开发中踩过的坑,希望能帮助到大家。

先虚拟一个业务场景,方便大家思考

我举个例子,拿京东或者淘宝说吧,如果你的业务让你计算几个维度(广告位置、小时、广告类型等等吧,我就随便举个例子),每个维度的数据uv量级,方便业务评估和市场决策,数据精准度不要求完全精准,误差在1%以内就行了,你该如何做?

我们针对两个开发者思路,来跟大家梳理我们踩过的坑。

思路一,能跑就行,不关注性能

解决方式:直接count distinct

优势:应届生都会

弊端:数据去重性能差

计算性能:刚开始数据量少,4-6个小时可以出来,随着数据量增多运行时间 6-12个小时,业务对此非常不满意,早上来了看不到数据报表,需要等下午才产出,直接影响数据人员的口碑(老板开周会,肯定会diss做数据的,不能忍呀兄弟们,一定要精益求精!!!)。

思路二,用bitmap去重复

经过一番技术调研,发现用bitmap去重复,性能会很高,但设备id(imei、idfa) 不是数字,没有办法用bitmap,如果想用bitmap,需要把设备ID做hash计算,还得取绝对值,正数才行

解决方式:abs(hash(imei))

优势:bitmap去重复性能高效,数据计算性能降低到了40分钟,从之前的10个小时跑不出来,变成了40分钟可以运行出来,直接单车变摩托。

弊端:发现数据误差到了6%,排查发现,是数据设备ID在hash的时候会出现正负数,也就是两个设备他的hash值是正负对称的(举个例子:一个设备hash值 -1,一设备个hash值1),两个设备取绝对值abs,会出现都等于1。

针对这个问题,狗哥给出了建议,就是先根据设备ID取模1000(这个数大家可以自己去根据数据量调试),进行设备ID分桶,这样的好处相同设备会分在同一个桶内,同时减少了hash值绝对值这之后相互影响的情况,然后每个分桶的u去重复uv再累加,这样下来,分维度的数据uv就会计算出来了,数据准确度到了0.03%,符合业务要求,同时数据性能稳定在40分钟左右。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小晨说数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
悄悄学习Doris,偷偷惊艳所有人 | Apache Doris四万字小总结
DorisDB是由Apache Doris核心研发团队打造的新一代企业级MPP数据库。它继承了Apache Doris项目十多年研发成果,累积了线上数千台服务器稳定运行经验,并在此基础上,对传统MPP数据库进行了开创性的革新。
王知无-import_bigdata
2021/09/22
7.8K1
Hive性能优化统计每日IP CREATE TABLE ip_2014_12_29 AS SELECT COUNT(DISTINCT ip) AS IP FROM logdfs WHERE logda
Hive性能优化 1.概述   继续《那些年使用Hive踩过的坑》一文中的剩余部分,本篇博客赘述了在工作中总结Hive的常用优化手段和在工作中使用Hive出现的问题。下面开始本篇文章的优化介绍。 2.介绍   首先,我们来看看Hadoop的计算框架特性,在此特性下会衍生哪些问题? 数据量大不是问题,数据倾斜是个问题。 jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,耗时很长。原因是map reduce作业初始化的时间是比较长的。 sum,
Albert陈凯
2018/04/04
1.7K0
Hive性能优化统计每日IP CREATE TABLE ip_2014_12_29 AS SELECT COUNT(DISTINCT ip) AS IP FROM logdfs WHERE logda
《Flink 对线面试官》3w 字、6 大主题、30 图、36 个高频问题!(建议收藏)
兄弟们,在 18w 字《Flink SQL 成神之路》之后,我的另一篇《Flink 对线面试官》申请出战!
公众号:大数据羊说
2022/05/17
1.9K0
《Flink 对线面试官》3w 字、6 大主题、30 图、36 个高频问题!(建议收藏)
Flink基于两阶段聚合及Roaringbitmap的实时去重方案
去重是大数据计算中的常见场景,本文介绍了Flink结合数据倾斜问题的一般性解决方案——两阶段聚合,以及位图(Bitmap)的优化版数据结构——Roaringbitmap给出的一种实时去重解决方案,并在最后与其他方案进行了对比。
可君
2023/01/03
3.4K0
Flink 对线面试官(三):6k 字,6 个面试高频实战问题(建议收藏)
本文主要是整理博主收集的 Flink 高频面试题。之后每周都会有一篇,助力大家拿下面试。
公众号:大数据羊说
2022/04/04
8700
Flink 对线面试官(三):6k 字,6 个面试高频实战问题(建议收藏)
Doris数据去重有妙招,在精确与性能之间达成完美平衡
大规模数据处理中,去重计算就像一把双刃剑。记得刚入行时,一位资深数据工程师给我讲过这样一个故事:他们的广告平台每天要处理上亿级别的用户行为数据,最初用普通的DISTINCT计算,结果到了月底跑统计时,整个集群就像陷入泥潭,性能直线下降。
一臻数据
2024/12/24
2300
Doris数据去重有妙招,在精确与性能之间达成完美平衡
【XL-LightHouse】开源通用型流式大数据统计系统介绍
以互联网行业来说,在移动互联网发展比较成熟的现在,流量见顶,红利消失,企业竞争日趋惨烈,获取新增用户的成本日益增高。很多企业开始意识到不能一味的通过补贴、价格战、广告投放这种简单粗暴的方式抢占市场,这样的运作模式很难长时间维系。而通过精细化和数据化运营来降低成本、提升效率、最大化单用户价值的理念逐渐被越来越多的企业所接受。精细化和数据化运营的前提是要建立起一套完善的数据指标体系,借助这个数据指标体系企业可以有多方面的用途:
用户2468294
2023/07/28
8190
Spark性能优化指南——高级篇
原文:https://tech.meituan.com/spark-tuning-pro.html
solve
2019/10/30
8520
Spark性能优化指南——高级篇
Greenplum性能优化之路 --(三)ANALYZE
基于规则的优化器,就是优化器在优化查询计划的时候,是根据预先设置好的规则进行的,这些规则无法灵活改变。举个例子,索引优先于扫描,这是一个规则,优化器在遇到所有可以利用索引的地方,都不会选择扫描。这在多数情况下是正确的,但也不完全如此:
lambgong
2020/08/25
4.4K0
Greenplum性能优化之路 --(三)ANALYZE
Apache Doris在京东广告的应用实践
本文主要介绍Apache Doris在京东广告报表查询场景下的应用。文章将从我们原有系统开始讲述,包括我们遇到的问题,面临的挑战,以及我们为何选择使用Apache Doris。最后将介绍Doris在我们在生产环境下的使用情况,包括Apache Doris在京东“618”,“双11”大促中的表现。希望通过我们的使用实践为大家提供一些经验参考,也欢迎大家对我们的不足之处提出建议。
Spark学习技巧
2020/11/03
1.7K0
Apache Doris在京东广告的应用实践
漫谈千亿级数据优化实践:一次数据优化实录
即使没有数据倾斜,千亿级的数据查询对于系统也是一种巨大负担,对于数据开发来说,如何来优化它,既是挑战,也是机遇!
CSDN技术头条
2018/02/13
1.6K0
漫谈千亿级数据优化实践:一次数据优化实录
【技术博客】Spark性能优化指南——高级篇
前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为《Spark性能优化指南》的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题。 数据倾斜调优 调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。 数据倾斜发生时的现象 绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1
美团技术团队
2018/03/12
2.1K0
【技术博客】Spark性能优化指南——高级篇
美图分布式Bitmap实践:Naix
大数据技术和应用系统目前已经在各个行业中发挥着巨大的作用,各种各样的开源技术也给大数据从业人员带来了很大的便利。Bitmap 作为一种大数据需求下产生的计算体系,有着计算速度快、信息密度高、支持海量数据等众多优势。
美图数据技术团队
2018/08/22
1.4K0
美图分布式Bitmap实践:Naix
干货!万亿级数据库MongoDB集群性能优化实践合辑(上)
本文来自OPPO文档数据库mongodb负责人杨亚洲老师2020年深圳Qcon全球软件开发大会《专题:现代数据架构》专场、dbaplus专场:万亿级数据库MongoDB集群性能优化实践、mongodb2020年终盛会分享,分享内容如下(体验万亿级mongodb服务层、存储引擎、高并发线程模型、异地多活容灾等实现细节)。
MongoDB中文社区
2021/04/02
2.9K0
2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现?
2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现?
福大大架构师每日一题
2023/06/21
5010
2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现?
常见性能优化策略的总结
本文要感谢我职级评定过程中的一位评委,他建议把之前所做的各种性能优化的案例和方案加以提炼、总结,以文档的形式沉淀下来,并在内部进行分享。力求达到如下效果: 1. 形成可实践、可借鉴、可参考的各种性能优化的方案以及选型考虑点,同时配合具体的真实案例,其他人遇到相似问题时,不用从零开始。 2. 有助于开阔视野,除了性能优化之外,也能提供通用的常见思路以及方案选型的考虑点,帮助大家培养在方案选型时的意识、思维以及做各种权衡的能力。 文章在内部分享后,引起强烈分享,得到了不少同事和朋友的认可和好评,觉得对日常的工作
美团技术团队
2018/03/12
1.5K0
常见性能优化策略的总结
【Python爬虫实战】高效数据去重:利用Redis优化爬虫性能
在网络爬虫的开发过程中,数据的去重是一个至关重要的环节。随着信息的快速增长,重复的数据不仅占用了宝贵的存储空间,还可能导致后续的数据处理效率降低。因此,掌握有效的去重方法可以帮助开发者提高爬虫的性能和可靠性。本文将深入探讨多种数据去重的策略,尤其是如何利用Redis这一高效的工具来优化去重流程。
易辰君
2024/11/07
3070
大数据去重方案
数据库中有有一张表专门存储用户的维度数据,由于随着时间的推移,用户的维度数据也可能发生变化,故每一次查看都会保存一次记录。 现在需要对数据按用户分析,但当中有大量的重复数据,仅用数据库的等值去重明显不可行。
全栈程序员站长
2022/07/11
9800
干货 | 提速10倍+,StarRocks 指标平台在携程火车票的实践
携程火车票事业群运营着铁友、携程火车票和去哪儿火车票等重要的业务和品牌,目前正在积极地拓展海外市场。火车票的指标平台旨在为业务人员提供便捷的指标查询服务,让业务人员能够快速灵活地获得这些业务和品牌相关的指标数据。
携程技术
2023/09/06
5870
干货 | 提速10倍+,StarRocks 指标平台在携程火车票的实践
推荐广告系统中的特征
数据和特征的机器学习的基础,没有足够数量的正负样本和有效且适合模型的特征,即使模型再优秀,模型的效果也不好太好,相反数据量足够,设计出有效且适合模型的特征,即使使用最简单的模型也可能获得较好的效果,特征的重要性不言而喻,我们应该从哪些方面设计特征呢?文本中特征相关概念、人工特征工程、特征处理方式、特征工程和模型的结合等方面具体介绍下推荐广告系统中的特征。
用户2794661
2022/07/20
2.5K0
推荐阅读
相关推荐
悄悄学习Doris,偷偷惊艳所有人 | Apache Doris四万字小总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档