编辑推荐

适读人群:大数据开发者
  大数据知名培训师王家林新作。  详细介绍大数据开发语言Scala及其在分布式框架Akka和Kafka中的应用。  秉承“实战”类图书特点,解析大量代码的编写操作,具有较强的可操作性,便于读者学习和理解。

内容简介

  《Scala语言基础与开发实战》分为基础篇、中级篇、高级篇及分布式框架四大部分,从Scala零基础入门,步步深入,引导读者由浅入深地学习Scala及其应用。《Scala语言基础与开发实战》从手把手指引读者搭建Scala语言开发环境开始,详细介绍了Scala的语法基础,以代码实例形式分别讲解了Scala面向对象开发及函数式编程;在此基础上进一步深入讲解了Scala的中高级语法特性,包括模式匹配、集合、类型参数、高级类型、隐式转化及各语法特性在Spark源码中的应用解析,并引出Scala的Actor模型及其应用详解。《Scala语言基础与开发实战》还详细介绍了以Scala为基础的两大框架——Akka和Kafka。  《Scala语言基础与开发实战》每章开始均有重点介绍,以引导读者有目的、有重点地阅读或查阅。另外,针对不同语法特性的源码及应用解析是《Scala语言基础与开发实战》的另一大特点。  《Scala语言基础与开发实战》适合具备一定编程语言基础、对大数据开发有兴趣的在校学生,同时,对有面向对象编程或函数式编程经验的人员,《Scala语言基础与开发实战》也可以作为开发实例的参考书籍。

目录

前言基础篇第1章Scala零基础入门1.1Scala概述1.2Windows及Linux下Scale运行环境安装配置1.2.1软件工具准备1.2.2Windows环境下的Scala安装1.2.3Linux环境下的Scala安装1.2.4Linux环境下的Hadoop安装与配置1.2.5Linux环境下的Spark安装与配置1.3Scala开发环境搭建和HelloWorld实例1.3.1Scala集成开发工具的安装1.3.2HelloWorld编程实例1.3.3WorkSheet的使用1.4变量的使用1.4.1Scala解释器中的变量示例1.4.2val变量的定义1.4.3var变量的定义1.4.4var变量与val变量的使用比较1.5函数的定义、流程控制、异常处理1.5.1函数的定义1.5.2流程控制(if、while、for)1.5.3异常处理1.6Tuple、Array、Map与文件操作1.6.1Tuple元组1.6.2Array数组1.6.3文件操作1.6.4Map映射1.7Scala中的apply方法1.7.1Object中的apply1.7.2Class中的apply1.7.3Array数组的apply实现1.8小结第2章Scala面向对象编程开发2.1类的定义及属性2.1.1类定义2.1.2带有getter和setter的属性2.2主构造器、私有构造器、构造器重载2.2.1构造器重载之辅助构造器2.2.2主构造器2.2.3不同访问权限的构造器2.3内部类和外部类2.4单例对象、伴生对象2.5继承:超类的构造、重写字段、重写方法2.5.1超类的构造2.5.2重写字段2.5.3重写方法2.6抽象类、抽象字段、抽象方法2.6.1抽象类2.6.2抽象字段2.6.3抽象方法2.7trait特质2.7.1作为接口使用的trait2.7.2在对象中混入trait2.7.3trait深入解析2.8多重继承、多重继承构造器执行顺序及AOP实现2.8.1多重继承2.8.2多重继承构造器执行顺序2.8.3AOP实现2.9包的定义、包对象、包的引用、包的隐式引用2.9.1包的定义2.9.2包对象2.9.3包的引用2.9.4包的隐式引用2.10包、类、对象、成员、伴生类、伴生对象访问权限2.10.1包、类、对象、成员访问权限2.10.2伴生类、伴生对象访问权限2.11小结第3章Scala高阶函数3.1匿名函数3.2偏应用函数3.3闭包3.4SAM转换3.5Curring函数3.6高阶函数3.7高阶函数在Spark中的应用3.8小结中级篇第4章Scala模式匹配4.1模式匹配简介4.2模式匹配类型4.2.1常量模式4.2.2变量模式4.2.3构造器模式4.2.4序列(Sequence)模式4.2.5元组(Tuple)模式4.2.6类型模式4.2.7变量绑定模式4.3模式匹配与CaseClass4.3.1构造器模式匹配原理4.3.2序列模式匹配原理4.3.3SealedClass在模式匹配中的应用4.4模式匹配应用实例4.4.1for循环控制结构中的模式匹配4.4.2正则表达式中的模式匹配4.4.3异常处理中的模式匹配4.4.4Spark源码中的模式匹配使用4.5本章小结第5章Scala集合5.1可变集合与不可变集合(Collection)5.1.1集合的概述5.1.2集合的相关操作5.1.3集合的操作示例5.2序列(Seq)5.2.1序列的概述5.2.2序列的相关操作5.2.3序列的操作示例5.3列表(List)5.3.1列表的概述5.3.2列表的相关操作5.3.3列表的操作示例5.4集(Set)5.4.1集的概述5.4.2集的相关操作5.4.3集的操作示例5.5映射(Map)5.5.1映射的概述5.5.2映射的相关操作5.5.3映射的操作示例5.6迭代器(Iterator)5.6.1迭代器的概述5.6.2迭代器的相关操作5.6.3迭代器的操作示例5.7集合的架构5.8小结高级篇第6章Scala类型参数6.1泛型6.1.1泛型的概述6.1.2泛型的操作示例6.2界定6.2.1上下界界定6.2.2视图界定6.2.3上下文界定6.2.4多重界定6.2.5界定的操作示例6.3类型约束6.3.1类型约束的概述6.3.2类型约束的操作示例6.4类型系统6.4.1类型系统的概述6.4.2类型系统的操作示例6.5型变Variance6.5.1协变6.5.2逆变6.5.3协变与逆变的操作示例6.6结合Spark源码说明Scala类型参数的使用6.7小结第7章Scala高级类型7.1单例类型7.1.1单例类型概述7.1.2单例类型示例7.2类型别名7.2.1类型别名概述7.2.2类型别名示例7.3自身类型7.3.1自身类型概述7.3.2自身类型示例7.4中置类型7.4.1中置类型概述7.4.2中置类型示例7.5类型投影7.5.1类型投影概述7.5.2类型投影实例7.6结构类型7.6.1结构类型概述7.6.2结构类型示例7.7复合类型7.7.1复合类型概述7.7.2复合类型示例7.8存在类型7.8.1存在类型概述7.8.2存在类型示例7.9函数类型7.9.1函数类型概述7.9.2函数类型示例7.10抽象类型7.10.1抽象类型概述7.10.2抽象类型实例7.11Spark源码中的高级类型使用7.12本章小结第8章Scala隐式转换8.1隐式转换函数8.1.1隐式转换函数的定义8.1.2隐式转换函数的功能8.2隐式类与隐式对象8.2.1隐式类8.2.2隐式参数与隐式值8.3类型证明中的隐式转换8.3.1类型证明的定义8.3.2类型证明使用实例8.4上下文界定、视图界定中的隐式转换8.4.1Ordering与Ordered特质8.4.2视图界定中的隐式转换8.4.3上下文界定中的隐式转换8.5隐式转换规则8.5.1发生隐式转换的条件8.5.2不会发生隐式转换的条件8.6Spark源码中的隐式转换使用8.6.1隐式转换函数8.6.2隐式类8.6.3隐式参数8.7本章小结第9章Scala并发编程9.1Scala的Actor模型简介9.2ScalaActor的构建方式9.2.1继承Actor类9.2.2Actor工具方法9.3Actor的生命周期9.3.1start方法的等幂性9.3.2Actor的不同状态9.4Actor之间的通信9.4.1Actor之间发送消息9.4.2Actor接收消息9.5使用react重用线程提升性能9.6Channel通道9.6.1OutputChannel9.6.2InputChannel9.6.3创建和共享channel9.7同步和Future9.8Scala并发编程实例9.8.1ScalaActor并发编程9.8.2ExecutorService并发编程9.9小结分布式框架篇第10章Akka的设计理念10.1Akka框架模型10.2创建Actor10.2.1通过实现akka.actor.Actor来创建Actor类10.2.2使用非缺省构造方法创建Actor10.2.3创建匿名Actor10.3ActorAPI10.3.1Actortrait基本接口10.3.2使用DeathWatch进行生命周期监控10.3.3Hook函数的调用10.3.4查找Actor10.3.5消息的不可变性10.3.6发送消息10.3.7转发消息10.3.8接收消息10.3.9回应消息10.3.10终止Actor10.3.11Become/Unbecome10.3.12杀死Actor10.4不同类型的Actor10.4.1方法派发语义10.4.2终止有类型Actor10.5小结第11章Akka核心组件及核心特性剖析11.1Dispatchers和Routers11.1.1为Actor指定派发器11.1.2派发器的类型11.1.3邮箱11.1.4Routers11.1.5路由的使用11.1.6远程部署router11.2Supervision和Monitoring11.2.1Supervision11.2.2Monitoring11.3Akka中的事务11.3.1STM11.3.2使用STM事务11.3.3读取Agent事务中的数据11.3.4更新Agent事务中的数据11.3.5Actor中的事务11.3.6创建Transactor11.4小结第12章Akka程序设计实践12.1Akka的配置、日志及部署12.1.1Akka中配置文件的读写12.1.2Akka中日志配置12.1.3Akka部署及应用场景12.2使用Akka框架实现单词统计12.3分布式Akka环境搭建12.4使用Akka微内核部署应用12.5Akka框架在Spark中的运用12.6小结第13章Kafka设计理念与基本架构13.1Kafka产生的背景13.2消息队列系统13.2.1概述13.2.2常用的消息队列系统对比13.2.3Kafka特点及特性13.2.4Kafka系统应用场景13.3Kafka设计理念13.3.1专业术语解析13.3.2消息存储与缓存设计13.3.3消费者与生产者模型13.3.4Push与Pull机制13.3.5镜像机制13.4Kafka整体架构13.4.1Kafka基本组成结构13.4.2Kafka工作流程13.5Kafka性能分析及优化13.6Kafka未来研究方向13.7小结第14章Kafka核心组件及核心特性剖析14.1Kafka核心组件剖析14.1.1Producers14.1.2Consumers14.1.3LowLevelConsumer14.1.4HighLevelConsumer14.2Kafka核心特性剖析14.2.1Topic、Partitions14.2.2Replication和LeaderElection14.2.3ConsumerRebalance14.2.4消息传送机制14.2.5Kafka的可靠性14.2.6Kafka的高效性14.3Kafka即将发布版本核心组件及特性剖析14.3.1重新设计的Consumer14.3.2CoordinatorRebalance14.4小结第15章Kafka应用实践15.1Kafka开发环境搭建及运行环境部署15.1.1Kafka开发环境配置15.1.2Kafka运行环境安装与部署15.2基于Kafka客户端开发15.2.1消息生产者(Producer)设计15.2.2消息消费者(Consumer)设计15.2.3Kafka消费者与生产者配置15.3SparkStreaming整合Kafka15.3.1基本架构设计流程15.3.2消息消费者(Consumer)设计——基于Receiver方法15.3.3消息消费者(Consumer)设计——基于NoReceiver方法15.3.4消息生产者(Producer)设计15.4小结附录Kafka集群server.properties配置文档参考文献

前言/序言

  采用Scala语言编写实现的,大数据领域最火爆的计算框架Spark(其实Spark在Apache下的数据处理领域也是最火爆的计算框架),正在以迅雷不及掩耳之势快速发展。很少有一门语言能够像Scala这样,因其作为大数据框架Spark的核心和首选开发语言而爆发式地普及起来。Spark本身起源于2009年,是美国加州大学伯克利分校AMP实验室的一个研究性项目,于2010年开源,在2014、2015年大数据领域软件排名中,Spark都以绝对优势遥遥领先!虽然基于Spark平台可以采用Scala、Java、Python、R等4种语言开发,但据Spark官方统计,2014年和2015年全世界范围内基于Spark开发采用最多的语言一直都是Scala。另外,在大数据领域越来越多的其他技术框架,例如Kafka等也都把Scala作为实现和开发语言。因此,为了打好大数据领域学习的基础,《Scala语言基础与开发实战》面向广大Scala爱好者和大数据开发者,以实战为主导,并用实战与理论相结合的方式来帮助读者学习Scala语言。  从2012年美国政府的“大数据研发计划”,到2015年我国国务院发布的《促进大数据发展行动纲要》,可以说,大数据已经迎来了它的黄金时代。《Scala语言基础与开发实战》紧跟时代潮流,除了讲解Scala语言之外,还额外挑选了当前在大数据领域中应用非常广泛的Akka和Kafka两大框架进行讲解,并且详细讲解了Scala语言在其中的应用。其中,Akka是一个在JVM上构建高并发、分布式和可快速恢复的消息驱动应用的工具包;Kafka是高产出的分布式消息系统,它实现了生产者和消费者之间的无缝连接,实现了处理速度快、高可扩展性的分布式实时系统。  《Scala语言基础与开发实战》编写的主线是以Scala实战实例为主导,由浅入深,从Scala的基础篇、中级篇直至高级篇,对Scala各个知识点加以详细分析并给出相应的实例及解析。然后更进一步地引入分布式框架篇,针对当前大数据领域使用非常广泛的大分布式框架Akka和Kafka,扩展Scala语言在开发分布式框架时的实战实例,为读者进一步学习大数据领域各个框架打好基础。  参与《Scala语言基础与开发实战》编写的有王家林、段智华、管祥青、徐奔、张敏、徐香玉等。  《Scala语言基础与开发实战》能顺利出版,离不开出版社编辑们的大力支持与帮助,在此表示诚挚的感谢。  非常感谢《Scala语言基础与开发实战》的技术审核徐香玉为审核《Scala语言基础与开发实战》技术相关内容所做出的努力。  在阅读《Scala语言基础与开发实战》的过程中,若发现任何问题或有任何疑问,可以加入《Scala语言基础与开发实战》的阅读群提出讨论,会有专人帮忙答疑。同时,该群中也会提供《Scala语言基础与开发实战》所用实例代码。  由于时间仓促,书中难免存在不妥之处,请读者谅解,并提出宝贵意见。

其他推荐