pyspark小白:尝试性能优化一点心得

本文作者从Python编程背景出发,分享了在学习Spark过程中遇到的性能优化问题。在解决视频TAG与昵称简介匹配度的业务场景中,通过数据层面的优化(减少冗余,压缩数据)和Spark调优(使用rdd.map,broadcast+mapjoin,cache/persist)实现了性能提升。V2版本避免了全量数据长时间未完成计算的问题,展示了从脚本到Spark的性能飞跃。
摘要由CSDN通过智能技术生成

前言:

本人之前情况是有python编程基础,但对大数据分布式的掌握限于皮毛的理论知识。借着任务驱动,历时两周空闲时间,先后学习了1.spark(pyhon版)之RDD编程,SparkSql,SparkMl;2.了解spark运行的基本底层原理,在写代码时对spark性能优化的一些手段。其实很浅,把自己一些tips整理出来,希望能帮助到同样开始入门的小白白。

业务场景:

业务上希望能找到文不对题的CP(昵称简介与本人生产视频不符,会给消费者先入为主带来一些主观上的意外感的CP)。一个指标是计算视频TAG与昵称简介的匹配度。

V1版本:

从业务和计算量上考虑,入选的CP是核心CP(在90天有过生产行为,数量级在10w+),为了计算匹配度,需要针对CP生产的每一条视频进行TAG匹配。

在对CP与媒资表中VID做关联之后,我将关联数据结果存入tdw,之后写py脚本做分词与匹配度的计算。

但在小样本中调试代码完毕后,在全量CP重跑数据时,一天也没有产出结果。在查看数据集后发现单日数据量级在千万级别。由此放弃了脚本,进入Spark。

V2版本:

为了提升性能,结合数据特点和spark优化方法,从以下几方面做出了改进:

数据层面:

1.不产出CP和VID关联的宽表,减少冗余。分别抽取CP信息表(cp_uin,nick,desc),VID信息表待用(cp_uin,vid,tag)。

2.观察到很多CP都有为产出VID取相同TAG的习惯,因此VID信息表中以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值