Spark--->转换算子

Spark--->转换算子

  • flatMap:数据的拆分、转换(一对多)
  • map:转换(一对一)
  • filter:过滤算子
  • sort:排序算子
  • mapPartitions
  • mapPartitionsWithIndex
  • sample:取样,转换
  • mapValue
  • union
  • intersection
  • subtrat
  • reduceByKey
  • groupByKey
  • combinerByKey
  • foldByKey
  • aggregateByKey
  • join
  • repartition、coalesce

Spark--->转换算子_第1张图片

flatMap:数据的拆分、转换(一对多)

  def flatMapTest(): Unit = {
   
    //1、创建SparkConf
    val conf = new SparkConf().setMaster("local").setAppName("spark_context")
    //2、创建SparkContext
    val sc = new SparkContext(conf)
    //创建RDD
    val rdd1 = sc.parallelize(Seq("1,2,3,4"))
    //执行flatMap操作
    val rdd2 = rdd1.flatMap(item => (item.split(",")))
    rdd2.collect().foreach(println)
  }
  • 结果

1
2
3
4

map:转换(一对一)

  def mapTest(): Unit = {
   
    //1、创建SparkConf
    val conf = new SparkConf().setMaster("local").setAppName("spark_context")
    //2、创建SparkContext
    val sc = new SparkContext(conf)
    //1、创建RDD
    val rdd1 = sc.parallelize(Seq(1, 2, 3))
    //2、执行map操作
    val rdd2: RDD[Int] = rdd1.map(item => (item * 10))
    //3、得到结果
    rdd2.collect().foreach(println)
  }
  • 结果

10
20
30

filter:过滤算子

def filterTest(): Unit = {
   
  //1、创建SparkConf
  val conf = new SparkConf().setMaster("local").setAppName("spark_context")
  //2、创建SparkContext
  val sc = new SparkContext(conf)
  sc.parallelize(Seq(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
    .filter(item=>item%2==0)
    .collect()
    .foreach(item=>println(item))
}
  • 结果

2
4
6
8
10

sort:排序算子

/**
  * sortBy可以按照任何部分进行排序
  * sortByKey只可以按照key来排序
  */
def sortByTest(): Unit ={
   
  //1、创建SparkConf
  val conf = new SparkConf().setMaster("local[6]").setAppName("spark_context")
  //2、创建SparkContext
  val sc = new SparkContext(conf)
  val rdd2 = sc.parallelize(Seq(("a", 89), ("c", 90), ("b", 87)))
  val rdd1 = sc.parallelize(Seq(2,4,1,5,7,3))
  //rdd1升序排序
  rdd1.sortBy(item=>item,ascending = true).collect().foreach(println)
  //rdd2按照第二个来降序排序
  rdd2.sortBy(item=>item._2,ascending = false).collect().foreach(println)
  //rdd2按照key来排序
  rdd2.sortByKey().collect().foreach(println)
}

mapPartitions

  • 和map相比他是一个分区的数据来转换,map是一条一条的进行转换

你可能感兴趣的:(Spark,spark,大数据,hadoop,java)