map+case结构使用技巧

people.txt文本如下

lyzx1,19
lyzx2,20
lyzx3,21
lyzx4,22
lyzx5,23
lyzx6,24
lyzx7,25
lyzx7,25,哈哈
托塔天王
import org.apache.spark.{SparkConf, SparkContext}
 
class Start02 {}
 
object Start02{
 
  /**
    * map 用法深度理解
    * 1、在map中使用if-else,if分支结构最好带上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)
  }
}
原文地址:https://www.cnblogs.com/itboys/p/10299978.html