第3课:Scala函数式编程彻底精通及spark源码阅读
2016-01-04 16:18
405 查看
Scala最迷人的方式是函数式编程
Spark中的多数计算都是用函数式编程的,处理数据的时候都是针对集合的,一般都会作用的集合之上。
高阶函数,是scala和java最大不同点,最大价值
今天讲每一个例子没一点,都必须掌握,开启全新的编程人生
函数和变量都一样的,函数是独立使用,独立存在
fun1_v =fun1 _ 必须空格加下划线
Fun2 指向匿名函数 =>指向函数体
高阶函数是函数的参数是函数,这样的功能是非常的强大的
闭包在spark里面到处可见,下面spark就是闭包的例子
Reduceleft必须掌握
今天的作业是统计一个文件夹下面所有文件中所有单词出现的总次数(目前只实现了单个字符,对于多个字符后续还需要优化)
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) } }
相关文章推荐
- 万年历程序--C++编写
- java中的动态代理----自己手动实现
- Java并发编程:线程池的使用
- asp.net中实现文件下载功能
- myeclipse和eclipse的区别
- pip管理的安装与使用——python包的安装
- Eclipse dubbo Multiple annotations found at this line(出错)
- 【第三章】 DI 之 3.3 更多DI的知识 ——跟我学spring3
- java 代码中如何预防空指针异常
- ASP.NET 生命周期
- Java并发编程:同步容器
- PHPUnit 在phpstrom中composer项目的应用配置
- Java并发编程:深入剖析ThreadLocal
- 详解WordPress中分类函数wp_list_categories的使用
- Java并发编程:volatile关键字解析
- Java并发编程:Lock
- java读取指定package下的所有class
- springmvc的servlet配置详解 源码下载
- Python将unicode编码字符串转化为中文
- 创建 ASP.NET Web API的Help Page