1. 程式人生 > >使用scala開發spark時,map+case結構使用技巧

使用scala開發spark時,map+case結構使用技巧

scala開發Spark程式時使用map +case結構的一點小技巧

people.txt文字如下

lyzx1,19
lyzx2,20
lyzx3,21
lyzx4,22
lyzx5,23
lyzx6,24
lyzx7,25
lyzx7,25,哈哈
托塔天王
package com.lyzx.start

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

class Start02 {}

object Start02{

  /**
    * map 用法深度理解
    * 1、在map中使用if-elseif分支結構最好帶上else 表示把所有的情況都考慮全 否則會返回預設的空值
    * 2、在map中使用case是scala的用法和spark沒有關係 同樣要使用case 最好帶上 case _ 表示所有的情況都考慮完全
    *     否則容易出異常
    * @param args
    */
  def main(args: Array[String]): Unit = {
      val sparkConf = new SparkConf()
          sparkConf.setAppName("case_test")
          sparkConf.setMaster("local[2]")
      val sparkContext = new SparkContext(sparkConf)
      val rdd = sparkContext.textFile("files/people.txt")
      rdd.map(line=>line.split(","))
         .map(
            line=>if(line.length == 1) (line(0))
                  else if(line.length == 2) (line(0),line(1))
                  else (line(0),line(1),line(2))
         )
           .map{
              case (one) => ("one:"+one)
              case (name,age) =>("name:"+name,"age:"+age)
              case _ => ("_name","_age","_")
           }
            .foreach(println)
  }
}