• 1. Transformations-by 球哥
  • 2. 大数据学习网介绍我们的网址是:bigdatastudy.cn 我们提供专业的大数据学习视频,包括Hadoop,Spark,Storm,Mahout,机器学习等。 我们定价合理,让每个人都学得起大数据。
  • 3. 友情提示本系列课程主要由Learning.Spark这本书整理而来。 本系列课程主要目的,帮助想要学习Spark的同学入门。 本系列课程中的ppt可自由传播,无需任何授权,但不要用于商业用途哦。 本系列课程中的视频不要自由传播哦,如果同学们觉得课程价格不合理,欢迎在下面的群中反馈,我们会考虑调整价格的。 Spark学习交流群:368770186,371896553
  • 4. TransformationsTransformations介绍 逐元素transformations 集合运算
  • 5. Transformations介绍Transformations(转换): 从之前的RDD构建一个新的RDD,像map() 和 filter()。
  • 6. Transformations介绍Transformations的特点: Transformations返回一个崭新的RDD, filter() 操作返回一个指针,指向一个崭新的RDD,原RDD不受影响,能够在后面重复利用。
  • 7. 逐元素transformations许多的transformations是逐元素的,也就是每次转变一个元素。 两个最常用的transformations:map() and filter() map() transformation,接收一个函数,把这个函数应用到RDD的每一个元素,并返一个函数作用后的新的RDD。 filter() transformation,接收一个函数,返回只包含满足filter()函数的元素的新RDD。 输入RDD与输出RDD可以是不同的类型,例如input RDD[String] ,output RDD[Double]
  • 8. 逐元素transformationsmap() 例子- 对RDD中元素求平方 val input = sc.parallelize(List(1, 2, 3, 4)) val result = input.map(x => x * x) println(result.collect().mkString(","))
  • 9. 逐元素transformationsflatMap() 对每个输入元素,输出多个输出元素。 flat压扁的意思,将RDD中元素压扁后返回一个新的RDD。 例子- flatMap() ,把一行字分割成多个元素 val lines = sc.parallelize(List("hello world", "hi")) val words = lines.flatMap(line => line.split(" ")) words.first() // returns "hello"
  • 10. 逐元素transformationsflatMap()
  • 11. 集合运算RDDs支持数学集合的计算,例如并集,交集计算。注意:进行计算的RDDs应该是相同类型。 money->monkey
  • 12. 集合运算distinct()是很耗时的操作,因为它需要通过网络,shuffle所有的数据,以保证元素不重复。 一般情况下,我们不用distinct()。 union(other) 会包含重复的元素。 intersection(other)求交集。耗时操作,因为需要shuffle subtract(other)第一个RDD中存在,而不存在与第二个RDD的元素。需要shuffle。使用场景,机器学习中,移除训练集。
  • 13. 集合运算cartesian(other) 非常耗时。 使用场景:用户相似性的时候
  • 14. RDD的transformations基本的RDD transformations: RDD 包含 {1, 2, 3, 3}函数名功能例子结果map()对每个元素应用函数rdd.map(x => x + 1){2, 3, 4, 4}flatMap()压扁,常用来抽取单词rdd.flatMap(x => x.to(3)){1, 2, 3, 2,3, 3, 3}filter()过滤rdd.filter(x => x != 1){2, 3, 3}distinct()去重rdd.distinct(){1, 2, 3}sample(withReplacement,fraction, [seed])对一个RDD取样,是否进行替换rdd.sample(false, 0.5)不确定
  • 15. RDD的transformations两个RDD 的transformations: 一个RDD包含 {1, 2, 3},另一个RDD包含 {3, 4, 5}函数名功能例子结果union()并集rdd.union(other) {1, 2, 3, 3,4, 5}intersection()交集rdd.intersection(other){3}subtract()取存在第一个RDD,而不存在第二个RDD的元素(使用场景,机器学习中,移除训练集)rdd.subtract(other){1, 2}cartesian()笛卡尔积rdd.cartesian(other){(1, 3), (1,4), …(3,5)}
  • 16. 小结逐元素transformations 集合运算