新書推薦:
《
美丽与哀愁:第一次世界大战个人史
》
售價:NT$
653.0
《
国家豁免法的域外借鉴与实践建议
》
售價:NT$
857.0
《
大单元教学设计20讲
》
售價:NT$
347.0
《
儿童自我关怀练习册:做自己最好的朋友
》
售價:NT$
316.0
《
高敏感女性的力量(意大利心理学家FSP博士重磅力作。高敏感是优势,更是力量)
》
售價:NT$
286.0
《
元好问与他的时代(中华学术译丛)
》
售價:NT$
398.0
《
汽车传感器结构·原理·检测·维修
》
售價:NT$
500.0
《
怪谈百物语:不能开的门(“日本文学史上的奇迹”宫部美雪重要代表作!日本妖怪物语集大成之作,系列累销突破200万册!)
》
售價:NT$
296.0
|
編輯推薦: |
跟艾叔学习Spark,全面掌握Spark编程技能,快速成为合格的大数据工程师!
Spark编程全国总决赛等奖团队实战总结,提供Spark快速学习路线图。
11个综合实践案例和110个余个具体示例,透彻讲解Spark编程方法。
免费提供高清学习视频及电子书(涵盖虚拟机、Linux、Shell编程及Scala语言),一站式全方位夯实大数据开发基础。
|
內容簡介: |
本书是一本讲解Spark基础应用及编程的实用教程,基于 Spark 2.3 版本,内容包括 Spark 与大数据、构建 Spark 运行环境、开发一个Spark 程序、深入理解 Spark 程序代码、RDD 编程、Spark SQL 结构化数据处理、Spark Streaming、Structured Streaming、SparkR和GraphX。本书总结了Spark 学习的关键点;提出了 Spark 快速学习路线图;提供配套的 Spark前置课程学习资源链接,包括虚拟机、Linux 和 Shell 免费高清视频、《零基础快速入门Scala》免费电子书等,帮助零基础读者迅速夯实Spark基础。
本书配以大量的示例、源代码和注释,可以帮助读者快速、全面而又深入地掌握Spark编程技能。
本书既可作为高等院校大数据、云计算和人工智能相关专业的教材,也可以作为Spark学习者和大数据研发人员的技术参考书。
|
關於作者: |
文艾(艾叔):系统分析师,原解放军理工大学-奇虎360联合实验室技术负责人;具有多年大数据开发和运维经验,带领团队完成了与华为、中兴通讯和奇虎360等公司的多个大数据类项目;曾受邀为中兴通讯和奇虎360等公司做技术培训,其主讲的Spark课程长期排名51CTO学院大数据类(Spark分类)年销量前列;擅长帮助初学者快速掌握Spark大数据编程技能,近年来指导零基础本科生参加Spark类全国编程竞赛,战胜了多支985高校的研究生队,获得全国总决赛二等奖两次和三等奖一次;指导本科生完成的云计算和大数据类作品,参加科技创新竞赛,共获得全国特等奖一次,一等奖两次;通过“艾叔编程”公众号,以及在网易云课堂上开设的一系列免费视频课程,至今已帮助8万多名学习者入门编程,并获得好评。
|
目錄:
|
目录
前言
第1章Spark与大数据1
1.1大数据开发基础1
1.1.1什么是大数据1
1.1.2大数据开发的通用步骤2
1.1.3大数据开发技术4
1.2初识Spark10
1.2.1Spark是什么10
1.2.2Spark的技术特点11
1.3Spark技术栈12
1.4Spark重要组件13
1.4.1Spark Core13
1.4.2Spark SQL14
1.4.3GraphX15
1.4.4流数据处理16
1.4.5SparkR17
1.4.6MLlibML18
1.4.7Spark交互工具18
1.5Spark和Scala19
1.5.1Scala语言简介19
1.5.2为什么用Scala开发Spark框架20
1.5.3为什么用Scala开发Spark程序20
1.5.4Scala开发Spark程序所涉及的
技术20
1.5.5Scala语言基础21
1.6如何快速掌握Spark21
1.6.1Spark学习的痛点21
1.6.2Spark快速学习路线图22
1.6.3Spark学习中的关键点23
1.6.4利用本书相关资源高效学习Spark23
1.6.5本书所使用的软件和版本25
1.7练习25
第2章构建Spark运行环境26
2.1Spark程序运行时架构26
2.2构建Spark大数据运行环境28
2.2.1构建HDFS28
2.2.2构建Yarn30
2.2.3构建Spark集群31
2.3运行Spark程序(Local方式)31
2.4运行Spark程序(分布式方式)32
2.4.1Spark on Yarn32
2.4.2Spark on Standalone36
2.5Spark程序在spark-shell上运行41
2.6使用Web UI监控Spark程序
运行43
2.7扩展集群节点48
2.8练习49
第3章开发一个Spark程序51
3.1在命令行模式下开发Spark程序51
3.1.1构建Scala程序编译环境51
3.1.2使用Vim编写Spark程序53
3.1.3使用命令编译、打包Spark程序54
3.1.4运行Spark程序56
3.1.5使用java命令运行Spark程序57
3.1.6Spark程序编译、运行、部署的
关键点58
3.2使用IDEA开发Spark程序58
3.2.1IDEA安装和基本使用59
3.2.2使用IDEA编辑Spark代码60
3.2.3IDEA编译、打包62
3.2.4IDEA远程提交Spark程序63
3.3练习64
第4章深入理解Spark程序代码66
4.1Spark程序代码结构66
4.2Spark程序代码的核心概念68
4.2.1RDD68
4.2.2Application68
4.2.3Job69
4.2.4DAG70
4.2.5Stage72
4.2.6Task76
4.2.7Application、Job、Stage和Task的
并行粒度和并行条件77
4.3Spark程序代码执行过程77
4.4练习85
第5章RDD编程86
5.1RDD核心概念86
5.1.1Transformation的基本概念87
5.1.2Action的基本概念88
5.1.3Partition的基本概念88
5.2创建RDD89
5.2.1使用parallelizemakeRDD
创建RDD89
5.2.2使用textFile创建RDD91
5.2.3其他RDD创建操作92
5.3RDD Partition93
5.3.1Partition的基本操作94
5.3.2Partition的分区过程96
5.3.3Partition和Task98
5.3.4计算Partition的个数100
5.3.5Partition的综合应用103
5.4Transformation操作107
5.4.1map操作107
5.4.2flatMap操作111
5.4.3mapPartitions操作113
5.4.4join操作115
5.4.5union操作120
5.4.6intersection操作121
5.4.7groupBy操作123
5.4.8groupByKey操作124
5.4.9reduceByKey操作125
5.4.10aggregateByKey操作127
5.4.11cogroup操作129
5.5Action操作130
5.5.1collect操作130
5.5.2reduce操作130
5.5.3fold操作131
5.5.4aggregate操作133
5.5.5foreachPartition操作134
5.5.6saveAsTextFile操作135
5.5.7saveAsObjectFile操作135
5.6RDD的cachepersist和
checkpoint操作136
5.6.1cachepersist和checkpoint概述136
5.6.2cachepersist使用注意事项137
5.6.3cachepersist操作138
5.6.4checkpoint操作139
5.7练习140
第6章Spark SQL结构化数据处理142
6.1Spark SQL的核心概念142
6.1.1结构化数据和非结构化数据142
6.1.2DataFrame143
6.1.3Dataset144
6.1.4Persistent Table和Data
Warehouse145
6.1.5SQL146
6.1.6SparkSession147
6.2Spark SQL数据处理概述147
6.2.1Spark SQL数据处理环境147
6.2.2Spark SQL处理结构化数据149
6.2.3Spark SQL处理不同数据源的
数据150
6.3构建Spark SQL运行环境150
6.3.1Spark SQL运行环境概述150
6.3.2构建最简的Spark SQL运行环境151
6.3.3构建兼容Hive的Spark SQL运行
环境153
6.4DataFrameDataset快速上手157
6.4.1DataFrameDataset使用概述157
6.4.2在spark-shell中使用DataFrame
Dataset157
6.4.3在代码中使用DataFrameDataset161
6.4.4DataFrameDataset使用上的区别163
6.4.5DataFrame行解析方法164
6.4.6DataFrame和Dataset转换164
6.5DataFrameDataset与数据源的
转换165
6.5.1DataFrameDataset与数据源的转换
关系和方法概述165
6.5.2DataFrameDataset与Seq的转换167
6.5.3DataFrameDataset与RDD的
转换169
6.5.4DataFrameDataset文件与Sequence
文件的转换170
6.5.5DataFrameDataset与CSV文件的
转换170
6.5.6DataFrameDataset与JSON文件的
|
內容試閱:
|
前言
在大数据开发中,大数据处理是其中十分关键、必不可少的一环。Spark 是主流的通用大数据处理平台,因此,要学习大数据开发,必然要学习 Spark。
近年来,作者在大数据教学上,尤其是在 Spark 技术的应用和推广上进行了一系列有益的尝试。
?在全国较早地开设了云计算及大数据相关课程。
?在全国较早地对本科生开展了系统、深入的 Spark编程训练。
?主讲的Spark实战视频课程在51CTO学院长期排名大数据(Spark分类)课程的年销量第一。
?作者指导 3 支 Spark 零基础本科生团队参加了 3 届全国性Spark编程比赛(第二届、第三届和第四届全国高校云计算应用创新大赛技能赛),在同多支 985211 高校的参赛队角逐中,我们的本科生队战胜了多支研究生队,共获得全国总决赛二等奖两次,三等奖一次。
?此外,编者指导的云计算和大数据作品,参加国家级科技创新竞赛,共获得全国特等奖一次,一等奖两次。
在此期间,编者接触并培养了大量的零基础 Spark 学习者,总结出 Spark 初学者的四个共性问题。
?内容繁杂,理不清头绪:Spark 的学习内容太多,哪些是必须学的?先学哪个?后学哪个?漫无目的地学,只会导致事倍功半。
?基础不够:Spark 开发需要大量的前置知识,例如虚拟机、Linux 命令、网络基础、分布式系统基础和编程语言等,很多都是理论和实践结合在一起的,有一个问题搞不定,就会卡住进行不下去。
?Scala难以学习:Scala 语法晦涩难懂,读 Spark 的 Scala API,明明很简单的函数,却看起来像天书。
?无法动手:看了大量的Spark编程书籍,明白了 Spark 的技术原理,但是无法将自己的想法实现成Spark程序,更不用说利用Spark特性进行优化了。
为此,编者编写了这本《Spark 大数据编程实用教程》,力图能够帮助 Spark 初学者快速掌握Spark编程技能,少走弯路,具体做法如下。
?针对第一个问题,本书总结 Spark 学习的痛点,构建了 Spark 快速学习路线图,为读者提供一条清晰明确的学习路径;结合编者自身的开发经验,按照 2080 原则,精选Spark学习中的重难点,帮助读者快速、深入地掌握Spark。
?针对第二个问题,本书提供了一站式 Spark 前置课程资源,包括虚拟机、Linux 和Shell 编程等免费高清视频,这些视频在“网易云课堂”上学习人数多,好评度高。每门课大概 10 个小视频,短小精悍,每个视频时长 15min 以内,即使零基础也可快速入门。
?针对第三个问题,本书采用 Scala 作为Spark应用的开发语言,每个 API 和关键示例代码都有详细讲解,帮助读者在实战中快速掌握 Scala;同时,本书还提供配套编写的《零基础快速入门 Scala》免费电子书,精选 Scala 知识点,帮助读者在短时间内快速入门Scala。
?针对第四个问题,本书提供了非常多的 Spark 示例,它们来源于编者团队 5 年 Spark项目开发、3 年 Spark 全国编程大赛的实践经验。每个示例都有说明,关键代码有解释,还有测试数据和运行方法,非常适合自学。可以帮助读者迅速上手,全面、深入地掌握Spark编程技能,快速积累Spark开发经验。
本书共10章,分别是Spark与大数据、构建 Spark 运行环境、开发第一个Spark程序、深入理解Spark 程序代码、RDD 编程、Spark SQL 结构化数据处理、Spark Streaming、Structured Streaming、Spark R和GraphX。
在章节分工上,艾叔负责整个大纲的拟定,以及第 1、2、3、4、5、6、7、8 章的编写;艾叔、汪忠洋共同完成第9、10章的编写。
本书既可作为高等院校大数据、云计算和人工智能相关专业的教材,也可以作为Spark学习者和大数据研发人员的技术参考书。
感谢机械工业出版社的胡毓坚总编、和庆娣编辑、王斌编辑的大力支持。正是由于他们专业、热情和不辞辛苦的付出,才成就了本书,在此表示衷心的感谢!
感谢我的妻子,她营造了一个很好环境,让我能够安心写书,此书能够顺利出版,与她的包容和支持是密不可分的;感谢我的女儿,虽然她不懂书的内容,却总能给我以最温暖的鼓励;感谢我的父母,他们默默的支持是我前行的动力!
感谢一直以来,关心帮助我成长的家人、老师、领导、同学和朋友们!
谨以此书献给我曾学习、工作和生活多年的母校,虽然现已离开,但仍将铭记校训继续前行!
由于时间紧、任务急,书中难免有疏漏之处,如果阅读过程中有任何疑问,可通过作者邮箱:spark_aishu@126.com,或作者微信及公众号:艾叔编程联系我们。
编者
2020.01
|
|