
spark
齐格龙齐东强
这个作者很懒,什么都没留下…
展开
-
spark RDD的作用域
RDD的作用域也叫做closures,在RDD代码外部定义的对象,一旦放到RDD的closures里面,就会被以序列化的方式传输到工作机上,并且难以保证同步。var counter = 0var rdd = sc.parallelize(data)// Wrong: Don't do this!!rdd.foreach(x => counter += x)println("Counter value: " + counter)比如上述代码中,foreach的作用域是RDD的clo原创 2021-03-15 15:13:24 · 245 阅读 · 0 评论 -
spark对一维数组求平均值
val initialScores = Array(1,2,3,4,5)val nums = spark.sparkContext.parallelize(initialScores)val sum = nums.map(x=>(x,1)).reduce((x,y)=>(x._1+y._1,x._2+y._2))println(sum._1/sum._2)思路:通过map加一个用于计数的维度,然后通过reduce计算,求出和与数量,最后做商求平均值...原创 2021-03-15 10:27:59 · 671 阅读 · 0 评论 -
combineByKey用法
首先看定义。def combineByKey[C]( createCombiner: V => C, mergeValue: (C, V) => C, mergeCombiners: (C, C) => C, partitioner: Partitioner, mapSideCombine: Boolean = true, serializer: Serializer = null)我是从https://blo...原创 2021-03-12 14:57:38 · 791 阅读 · 0 评论 -
reduceByKey中的加号是什么意思
做了实验输入val rdd = spark.sparkContext.parallelize(Array("x 3y","x y","x y")).map(x=>(x.split(" ")(0),x.split(" ")(1))).reduceByKey((x,y) => x +y).foreach(println)输出:(x,3yyy)可知+是对第二个键值的运算,跟第一个键值对无关。如果第二个键值是字符串,+号是联接操作。如果第二个键值是数字 ,+ 是求和。...原创 2021-03-11 16:57:21 · 242 阅读 · 0 评论