• 1. Actions-by 球哥
  • 2. 大数据学习网介绍我们的网址是:bigdatastudy.cn 我们提供专业的大数据学习视频,包括Hadoop,Spark,Storm,Mahout,机器学习等。 我们定价合理,让每个人都学得起大数据。
  • 3. 友情提示本系列课程主要由Learning.Spark这本书整理而来。 本系列课程主要目的,帮助想要学习Spark的同学入门。 本系列课程中的ppt可自由传播,无需任何授权,但不要用于商业用途哦。 本系列课程中的视频不要自由传播哦,如果同学们觉得课程价格不合理,欢迎在下面的群中反馈,我们会考虑调整价格的。 Spark学习交流群:368770186,371896553
  • 4. ActionsActions
  • 5. Actions在RDD上计算出来一个结果,把结果返回给driver program或者保存在外部文件系统上,像count() 函数 first()。 count() 返回元素的个数
  • 6. RDD的actions函数名功能例子结果collect()返回RDD的所有元素rdd.collect(){1, 2, 3, 3}count()计数rdd.count()4countByValue()返回一个map,表示唯一元素出现的个数rdd.countByValue(){(1, 1),(2, 1),(3, 2)}take(num)返回几个元素rdd.take(2) {1, 2}top(num)返回前几个元素rdd.top(2){3, 3}takeOrdered(num)(ordering)返回基于提供的排序算法的前几个元素rdd.takeOrdered(2)(myOrdering){3, 3}takeSample(withReplacement, num, [seed])取样例rdd.takeSample(false, 1)不确定reduce(func)合并RDD中元素rdd.reduce((x, y) => x + y)9fold(zero)(func)与reduce()相似提供zero valuerdd.fold(0)((x, y) => x + y)9aggregate(zeroValue)(seqOp, combOp)与fold()相似,返回不同类型rdd.aggregate((0, 0))((x, y) =>(x._1 + y, x._2 + 1),(x, y) =>(x._1 + y._1, x._2 + y._2))(9, 4)foreach(func)对RDD的每个元素作用函数,什么也不返回rdd.foreach(func)什么也没有
  • 7. Actionsreduce() 最常用的是reduce(),接收一个函数,作用在RDD的两个类型相同的元素上,返回一个类型相同的新元素。 最常用的一个函数是加法。 使用reduce()我们可以很简单的实现,RDD中元素的累加,计数,和其它类型的聚集操作。 例子- reduce() val sum = rdd.reduce((x, y) => x + y)
  • 8. Actionsfold() 与reduce()相似, 类型相同 但是,在每个分区的初始化调用的时候,多了个“zero value” “zero value”的特点,把它应用在你的函数上,不管多少次,都不改变值(例如:+操作的0,*操作的1)。
  • 9. Actionsaggregate() 与fold()相似 类型可以不同 我们提供想要返回的“zero value”类型。 第一个函数,RDD中元素累加(每个节点只累加本地的结果)。 第二个函数,合并累加器(合并每个节点的结果)。 可以使用aggreate()计算RDD的平均值,而不使用map()和fold()结合的方法。
  • 10. Actions例子- aggregate() val result = input.aggregate((0, 0))( (x, y) =>(x._1 + y, x._2 + 1), (x, y) =>(x._1 + y._1, x._2 + y._2)) val avg = result._1 / result._2.toDouble
  • 11. Actionscollect() 遍历整个RDD,向driver program返回RDD的内容 一般测试时候使用,可以判断与预测值是否一样 需要单机内存能够容纳下(因为数据要拷贝给driver ) 大数据的时候,使用saveAsTextFile() action, saveAsSequenceFile()action等。
  • 12. Actionstake(n) 返回RDD的n个元素(同时尝试访问最少的partitions)。 返回结果是无序的。 一般测试时候使用
  • 13. Actionsforeach() 计算RDD中的每个元素,但不返回到本地。 可以配合println() 友好的打印出数据。
  • 14. Actions.foreach(println) 风格:把函数println当作参数传递给函数foreach 例子 - 计算bad的个数 errorsRDD = inputRDD.filter(line.contains("error")) warningsRDD = inputRDD.filter(line.contains("warning")) badLinesRDD = errorsRDD.union(warningsRDD) println(badLinesRDD.count() ) badLinesRDD.take(1).foreach(println)//使用take()取前1个数据
  • 15. Actionstop() 排序(根据RDD中数据的比较器) takeSample(withReplacement, num, seed) 取样例,是否需要替换值。 countByValue() 返回一个map,表示唯一元素出现的个数
  • 16. 小结Actions