栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spark常用算子分析与应用

Spark常用算子分析与应用

1、算子概述
  • 什么是算子

实质就是映射

  • 算子的重要作用

灵活实用

  • MapReduce 与 Spark算子比较

MapReduce只有2个算子,Map和Reduce,绝大多数应用场景下,均需要复杂编码才能达到用户需求。

Spark有80多个算子,进行充分的组合应用后,能满足绝大多数的应用场景。

2、Spark算子介绍与应用

1 转换算子

2 行动算子

3. 常用算子分析与应用

转换算子:

1.value型转换算子:

输入分区和输出分区一对一型

` map算子

val first=sc.parallelize(1 to 5,2) first.map(1 to _).collect

flatMap算子

val first = sc.parallelize(1 to 5,2) first.flatMap(1 to _).collect

mapPartition算子

glom算子::

以分区为单位,将每个分区的值形成一个数组

val a = sc.parallelize(Seq("one","two","three","four","five","six","seven"),3) a.glom.collect Array[Array[String]] = Array(Array(one, two), Array(three, four), Array(five, six, seven))

输入分区与输出分区多对一型

union算子

将两个Rdd合并成一个RDD,并不去重

val a = sc.parallelize(1 to 4, 2) val b = sc.parallelize(3 to 6, 2) a.union(b).collect (a ++ b).collect (a union b).collect Array[Int] = Array(1, 2, 3, 4, 3, 4, 5, 6)

输入分区与输出分区多对多型

groupby

val a =sc.parallelize(Seq(1,2,3,4,5,67,854,23424),3) a.groupBy(x=>{if(x>5)">5" else"<=5"}).collect Array[(String, Iterable[Int])] = Array((<=5,CompactBuffer(1, 2, 3, 4, 5)), (>5,CompactBuffer(67, 854, 23424)))

filter算子 白名单

val a =sc.parallelize(1 to 21 ,3) val b = a.filter(_ % 4 == 0) b.collect Array[Int] = Array(4, 8, 12, 16, 20)

distinct 去重

cache算子

主要将RDD元素从磁盘缓存到内存.

val a = sc.parallelize(1 to 4, 2) val b = sc.parallelize(3 to 6, 2) val c = a.union(b).cache c.count c.distinct().collect

key-value型转换算子

1)mapValues算子

针对(key,value)里的value进行处理

val first = sc.parallelize(List(("张一",1),("张二",2),("张三",3),("张四",4)),2) val second= first.mapValues(x=>x+1) second.collect

2)combineByKey

3)reduceByKey

val first = sc.parallelize(List("小米", "华为", "小米", "小米", "华为", "苹果"), 2) val second = first.map(x => (x, 1)) second.reduceByKey(_ + _).collect

4)join算子

这个类似于sql中的 inner join

五.行动算子

无输出型:不落地到文件或是hdfs的作用

foreach算子 val first = sc.parallelize(List("小米", "华为", "小米", "小米", "华为", "苹果"), 2) first.foreach(println)

hdfs输出型

saveAsTextFile算子

val RDD= sc.parallelize(List("小米", "华为", "小米", "小米", "华为", "苹果"), 2) RDD.saveAsTextFile("file:///home/zhaodefan/text/")

Scala集合和数据类型

collect算子

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/467400.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号