package com.spark.demo import com.spark.demo.util.SparkUtil import org.apache.spark.rdd.RDD import scala.collection.mutable /** * @created by imp ON 2019/2/14 */ case class Person1(name:String,age:Int) object CaseDemo { def main(args: Array[String]): Unit = { val appName = this.getClass.getName val isLocal = true val conf = SparkUtil.generateSparkConf(appName, isLocal, that => { // 這里可以單獨的指定當前spark應用的相關參數 // nothings that.set("", "") }) // 2.3 SparkContext對象的構建 val sc = SparkUtil.getSparkContext(conf) //可單獨寫方法判斷 讀取hdfs的某一天文件夾下所以文件 val path = "data/person" val data: RDD[Any] = sc.textFile(path).map { //case替代map(line=>)的寫法 不在使用._1 ._2 上一個父rdd的類型值可直接命名為變量使用 case (line) => { val arr = line.split(" ") (arr(0), arr(1)) } } .map(info => { Person1(info._1, info._2.toInt) }) .map { //case(p)相當於 map(p=>{}) case (person) => { (person, (person.name, person.age)) } }.map { case (person, (name, age)) => { val map = mutable.HashMap[String, Int]() map.+=(name -> age) } } data.foreach(println(_)) } }
結果如下
data.map(i=>{ })與
data.map{ case(上一個父rdd的類型值可直接命名為變量使用)=>{
//case() } }是一樣的道理 第二個代碼看起來明了,可直接知道父rdd的數據類型及結構,