Spark快速入門API① Transformation轉換算子

Spark支持兩種RDD操作:

transformation和action。transformation操作會針對已有的RDD創建一個新的RDD;

而action則主要是對RDD進行最後的操作,比如遍歷、reduce、保存到文件等,並可以返回結果給Driver程序。

Transformation API 的快速入門

//1.需求使用map函數將 將list中的每一個元素*2 返回新的RDD
    // 定義一個RDD 數據爲1-10的列表
    val list = sc.parallelize(1.to(10))
    val newList: RDD[Int] = list.map(_ * 2)
//2.需求使用filter將大於5的數據過濾掉得到一個新的RDD
    // 定義一個RDD 數據爲1-10的列表
    val list = sc.parallelize(1.to(10))
    val newList: RDD[Int] = list.filter(x=>x>5)
// 3.需求定義一個1-10列表指定一個2分區 並將分區0的數據每個一個數據*2 1分區的數據*3 返回新的RDD
     list.mapPartitionsWithIndex((x, res) => {if (x == 0) {res.map(_ * 2)} else {res.map(_ * 3)}}).foreach(println)
//4.需求定義兩個列表list1 list2 將兩個的數據求一個並集不去重 返回一個新的RDD
    val list1 = sc.parallelize(1.to(10), 2)
    val list2 = sc.parallelize(3.to(10), 2)
    val rel = list1.union(list2).collect()
    println(rel.addString(new StringBuilder,","))
//5.需求定義兩個列list1 list2 求出列表中的交集並返回新的RDD
    // 定義一個RDD 數據爲1-10的列表
    val list1 = sc.parallelize(1.to(10), 2)
    val list2 = sc.parallelize(3.to(10), 2)
    val unit = list1.intersection(list2)
    unit.foreach(println)
// 6.需求定義一個列表去掉重複的數據 返回新的RDD
    // 定義一個RDD 數據爲1-10的列表
    val list1 = sc.parallelize(List(1, 2, 4, 3, 3, 2, 2, 2, 3, 3, 5));
    // 使用 distinct 去重
    val data = list1.distinct().collect()
    data.foreach(println)
// 7.需求定義一個KV的類型以K進行分組得到一個新的RDD
    // 定義一個RDD
    val list1 = sc.parallelize(List(("tom", 1), ("zhangsan", 12), ("kill", 1), ("tom", 2)));
    val unit = list1.groupByKey()
    unit.foreach(println)
//8.需求定義一個列表要求將相同的key的求出總和
    // 定義一個RDD
    val list1 = sc.parallelize(List(("tom", 1), ("zhangsan", 12), ("kill", 1), ("tom", 2)));
    val datas: RDD[(String, Int)] = list1.reduceByKey(_ + _)
    datas.foreach(println)
// 9.需求定義一個列表爲kv類型 需要根據key進行排序
    // 定義一個RDD
    val list1 = sc.parallelize(List(("tom", 1), ("zhangsan", 12), ("kill", 1), ("tom", 2)));
    val unit = list1.sortByKey()
    unit.foreach(println)
//10.需求定義一個列表 將list1中數據按照升序進行排序
    var list1 = sc.parallelize(List(1, 2, 3, 4, 5, 0, 9, 8, 7))
    val result = list1.sortBy(x => x, true).collect()
    result.foreach(println)
// 11.需求將list1 與list2中的數據進行join
   // 定義上下文對象
    val sc = new SparkContext(conf)
    val list1 = sc.parallelize(List(("tom", 1), ("jerry", 2), ("kitty", 3)))
    val list2 = sc.parallelize(List(("jerry", 9), ("tom", 8), ("shuke", 7), ("tom", 2)))
    val data = list1.join(list2).collect()
    data.foreach(println)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章