Spark--->转换算子
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是一条一条的进行转换