1.Character.isDigit()  

   判断是否为数字

2.Character.isLetter():

   判断是否为字母

3.ToList.takeWhile(x=>x != B): 

   takeWhile的判断结果是Boolean,只要x值不等于B,则继续取;否则停止取元素的操作

4.map函数:

   是对当前集合中每个元素进行映射的操作,这个函数可以理解成把当前数据整理成Java中的map格式,key->value

5.通配符的使用

   在scala中我们使用_作为通配符,使用时它可以代表当前集合或者数据集中所有值,比如:a.filter(_ % 2==1),这里的通配符表示的意思就是:在集合a中,满足“元素除以2等于1”的所有数据获取出来。



6.flatmap和map:



   map的返回值与原来的集合返回值是一样的



   flatmap:把原来集合里所有的数据都转换成一个list里,不区分原来的集合是有多少层的嵌套;flatmap通俗来讲,就是将map中的所有值平铺,成为一个集合。例如:如果数据集中有三个list,每个list中有不同的结果,对当前数据集进行flatmap之后,得到新的结果集就是三个list中所有数据并组成一个list集合。



7.Range和Until



    Range形成一个序列,使用<初始值to 终点值 by 步阶>,可以在循环时指定变量的取值范围:



    1 to 10 结果是 x>= 1 && x<=10



    1 until 10 结果是x>= 1 && x<10



8.Tupple



    Tupplea是spark中的元组,我们可以把元组理解成多个元素构成一行,Tupple可以有多行也可以只有一行,比如Tupple中存储数据:((1,“Alice”,“Math”,90),(2,“Bob”,“Math”,98),……),所以当函数有多个返回值,我们就可以使用Tupple将函数的所有返回值都封装起来。但需要注意的是,使用Tupple封装的数据格式中都带有(),所以在打印或者输出文件时,我们需要将这些小括号去掉或者不输出。



9.加减运算



    scala 中使用+= 1 和-= 1来表示递增和递减,不存在++ 和--



    scala中可以使用* 实现Java中的x.multiply(x).multiply(x)的运算



10.scala的运算函数



   通过import scala.math._   就可以使用scala中的运算函数,比如sqrt() ,pow()--求平方



   注:scala中不存在静态方法,但是有个类似的特性叫单例对象;



11.变量声明



   Scala有两种变量声明方式,val和var。val就不能再赋值了。与之对应的,var可以在它生命周期中被多次赋值。



12.String操作函数



[plain]  


1. //获取首字符     
2. "Hello"(0)     
3. "Hello".take(1)     
4. //获取尾字符     
5. "Hello".reverse(0)     
6. "Hello".takeRight(1)

 

       

 相同的列表基本操作:take取前n个元素,drop舍弃前n个元素,head取第一个元素,tail取第一个元素后的剩余元素列表,init取除了最后一个元素的列表,last取最后一个元素。


13.返回值设置



   在scala中如果不设置返回值类型,可以直接省略Unit和=,直接在参数之后接花括号。



14.for (……) yield  



   在循环时创建了一个和原始集合相同的新集合



15.Option、None、Some



   为了让所有东西都是对象的目标更加一致,也为了遵循函数式编程的习惯,Scala鼓励你在变量和函数返回值可能不会引用任何值的时候使用Option类型。在没有值的时候,使用None,这是Option的一个子类。如果有值可以引用,就使用Some来包含这个值。Some也是Option的子类。



16.mapValues



   def mapValues[U](f: (V) => U): RDD[(K, U)]



   同基本转换操作中的map,只不过mapValues是针对[K,V]中的V值进行map操作。




1. val fileresult = sc.textFile("******")  
2.   .map { line =>  
3.     val arr = line.split(",")  
4.     (arr(0), arr(1), arr(2))  
5.   }  
6.   .groupBy(_._1)  
7.   .mapValues(tripple => column.map(key => tripple.find(_._2 == key).map(_._3).getOrElse("0")))  
8.   .map(x => s"${x._1},${x._2}")