spark算子图解

图片来源:梁洪亮老师的课件 
代码来源:Spark MLlib机器学习实践 王晓华

这里写图片描述

这里写图片描述

这里写图片描述

import org.apache.spark.{SparkConf, SparkContext}

object WordCount
{
    def main(args: Array[String])
    {
          //SparkContext 的初始化需要一个 SparkConf 对象, SparkConf 包含了Spark集群配置的各种参数(比如主节点的URL)
          val sc = new SparkContext("local", "testRDD")   //Spark 程序的编写都是从 SparkContext 开始的。
          var arr = sc.parallelize(Array(1, 2, 3, 4, 5))  //创建数据集
          var result = arr.flatMap(x => List(x+1)).collect()  //将整个数组转化为列表,列表中的内容为x+1
          result.foreach(println)
    }
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

运行结果: 
这里写图片描述

这里写图片描述

import org.apache.spark.{SparkConf, SparkContext}

object WordCount
{
    def main(args: Array[String])
    {
          //SparkContext 的初始化需要一个 SparkConf 对象, SparkConf 包含了Spark集群配置的各种参数(比如主节点的URL)
          val sc = new SparkContext("local", "testRDD")   //Spark 程序的编写都是从 SparkContext 开始的。
          var arr = sc.parallelize(Array(1, 2, 3, 4, 5))  //创建数据集
          var result = arr.map(x => List(x+1)).collect()  //将每个元素转化为列表,列表中的内容为x+1
          result.foreach(println)
    }
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

运行结果: 
这里写图片描述

这里写图片描述

import org.apache.spark.{SparkConf, SparkContext}

object WordCount
{
  def main(args: Array[String])
  {
    //SparkContext 的初始化需要一个 SparkConf 对象, SparkConf 包含了Spark集群配置的各种参数(比如主节点的URL)
    val sc = new SparkContext("local", "testRDD")   //Spark 程序的编写都是从 SparkContext 开始的。
    var arr = sc.parallelize(Array(1, 1, 2, 2, 3))  //创建数据集
    var result = arr.map((_, 1)).collect()  //将元素转化为列表,列表中的内容为x+1
    result.foreach(println)
  }
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

这里写图片描述

import org.apache.spark.{SparkConf, SparkContext}

object WordCount
{
    def main(args: Array[String])
    {
          //SparkContext 的初始化需要一个 SparkConf 对象, SparkConf 包含了Spark集群配置的各种参数(比如主节点的URL)
          val sc = new SparkContext("local", "testRDD")   //Spark 程序的编写都是从 SparkContext 开始的。
          var arr = sc.parallelize(Array(1, 1, 2, 2, 3))  //创建数据集
          var result = arr.map((_, 1)).reduceByKey(_+_).collect()  //将元素转化为列表,列表中的内容为x+1
          result.foreach(println)
    }
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

运行结果: 
这里写图片描述

import org.apache.spark.{SparkConf, SparkContext}

object WordCount
{
    def main(args: Array[String])
    {
          //SparkContext 的初始化需要一个 SparkConf 对象, SparkConf 包含了Spark集群配置的各种参数(比如主节点的URL)
          val conf = new SparkConf()
                    .setMaster("local")     //启动本地化计算
                    .setAppName("testRDD")  //设置本程序名称
          val sc = new SparkContext(conf)   //Spark 程序的编写都是从 SparkContext 开始的。
          //以上语句等价于  val sc = new SparkContext("local", "testRDD");
          val data = sc.textFile("c://wc.txt")  //读取文件
          data.flatMap(_.split(" "))         //下划线是占位符,flatMap是对行操作的方法,这里表示对读入的每个数据按空格进行分割
            .map((_, 1))                     //将每一项转化为key-value对,数据为key,1为value
            .reduceByKey(_+_)                //将具有相同key的项的value相加,合并成一个key-value对
            .collect()                       //将分布式的RDD返回为一个单机的Scala Array,在这个数组上运用scala的函数式操作
                                             //通过函数操作,将结果返回到Driver程序所在的节点,以数组形式存储
            .foreach(println)                //对每个元素println,打印
    }
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

运行结果: 
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值