![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spark
文章平均质量分 84
weixin_42733117
这个作者很懒,什么都没留下…
展开
-
Spark项目之用户行为【性能调优8】算子调优
实践:使用之前先评估RDD里面每个分区的数据量是多大,然后每个Excutor分到的内存是多大,避免同时处理大量数据造成OOM,在用户画像项目里面,我们拿到每行的数据转换成Tuple<sessionid,Row>的格式等很多转换格式的map都有做类似的优化。原理:map是对RDD中,每一行Row数据进行自定义转换处理,当数据量有一定程度时,自定义函数会执行多次,增加开销,这时候可以通过mapPartition来处理,他会一个分区的数据同时提交执行自定义函数转换RDD。原创 2024-06-05 16:37:52 · 242 阅读 · 0 评论 -
Spark常见算子详解
groupByKey 和groupby 的区别是前者是确定以key为分组,所以只返回value的迭代器,程序上后者不确定以什么来分组,所以返回[(String,Int) (K,V)]定义:countByKey算子统计K-v类型的数据中的Key的次数,countByValue统计所有的value出现的次数,统计对象可以是K-v,也可以是List等。定义:rdd.aggregateByKey((初始化的值)(分区内迭代计算的逻辑)(分区间计算的逻辑))原创 2024-05-28 22:46:39 · 1399 阅读 · 0 评论 -
Spark-Core【Shuffle原理】-【源码】
因为不是CheckPoint,所以走compute方法,发现是个抽象类,RDD抽象类里面有很多,因为我们是属于ShuffleRDD嘛,所以在ShuffleRDD.scala里面,发现抽象的compute方法,所以其实每种RDD都有不同的compute方法?文字理解:如果只落一个文件,那么三个Task去分,不知道应该从哪里开始读起,如果落三个文件,任务一多,就会形成小文件的问题,所以最好的办法是,生成一个数据文件,一个索引文件可以通过源码解析得知,Spark的原理。阅读DAGSchedule.scala。原创 2024-05-24 15:58:43 · 257 阅读 · 1 评论