第3课:Scala函数式编程彻底精通及spark源码阅读

Scala最迷人的方式是函数式编程

Spark中的多数计算都是用函数式编程的,处理数据的时候都是针对集合的,一般都会作用的集合之上。

高阶函数,是scala和java最大不同点,最大价值

今天讲每一个例子没一点,都必须掌握,开启全新的编程人生

 函数和变量都一样的,函数是独立使用,独立存在

 fun1_v =fun1 _  必须空格加下划线

Fun2 指向匿名函数 =>指向函数体


高阶函数是函数的参数是函数,这样的功能是非常的强大的

闭包在spark里面到处可见,下面spark就是闭包的例子


 

 

Reduceleft必须掌握


今天的作业是统计一个文件夹下面所有文件中所有单词出现的总次数(目前只实现了单个字符,对于多个字符后续还需要优化)

var dir =   newFile("E:\\study\\spark-1.6.0\\spark-1.6.0\\data\\mllib\\als")
var num:Int = 0
var keyword="8"
subdirs(dir)                                                 
 def subdirs(dir: File): Iterator[File] = {
        val irectory =dir.listFiles.filter(_.isDirectory)
        val files = dir.listFiles.toIterator
          for (file <- files)
          {
                    vallines = scala.io.Source.fromFile(file).getLines().toArray
                         for (line <- lines)
                {
                           var length = line.split(keyword).length
                           num = num +length-1
                }
          }
        files ++irectory.toIterator.flatMap(subdirs _)
       
    }
         
println("num:" + num)
  }
 
}





 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值