![]()
内容推荐 企业数据的分析始于读取、过滤和合并来自多个数据源的文件和数据流。Spark数据处理引擎是这方面的佼佼者,可处理各种量级的数据,其传输速度比Hadoop系统快100倍。得益于SQL的支持、直观的界面和简单的多语言API,你可轻松使用Spark,而不必学习复杂的新型生态系统。 本书将引导你创建端到端分析应用程序。在本书中,你可学习基于Java的有趣示例,包括用于处理NASA卫星数据的完整数据管道。你还可查看托管在GitHub上的有关Java、Python和Scala的代码示例,并探索、修改此代码。此外,本书的附录为你提供速查表,帮助你安装工具和理解特定的Spark术语。 主要内容 用Java编写的Spark应用程序 Spark应用架构 提取文件、数据库、数据流和Elasticsearch的数据 使用Spark SQL查询分布式数据集 阅读门槛 本书读者不需要具备有关Spark、Scala或Hadoop的经验。 作者简介 吉恩·乔治·佩林是一位经验丰富的数据和软件架构师。他是法国的第一位IBM Champion,并连续12年获奖,成为终身IBM Champion。 目录 第Ⅰ部分 通过示例讲解理论 第1章 Spark介绍 1.1 Spark简介及其作用 1.1.1 什么是Spark 1.1.2 Spark神力的四个支柱 1.2 如何使用Spark 1.2.1 数据处理/工程场景中的Spark 1.2.2 数据科学场景中的Spark 1.3 使用Spark,能做些什么 1.3.1 使用Spark预测NC餐饮行业的餐馆质量 1.3.2 Spark允许Lumeris进行快速数据传输 1.3.3 Spark分析CERN的设备日志 1.3.4 其他用例 1.4 为什么你应该喜欢数据帧 1.4.1 从Java角度了解数据帧 1.4.2 从RDBMS角度理解数据帧 1.4.3 数据帧的图形表示 1.5 第一个示例 1.5.1 推荐软件 1.5.2 下载代码 1.5.3 运行第一个应用程序 1.5.4 第一份代码 1.6 小结 第2章 架构和流程 2.1 构建思维模型 2.2 使用Java代码构建思维模型 2.3 运行应用程序 2.3.1 连接到主机 2.3.2 加载或提取CSV文件 2.3.3 转换数据 2.3.4 将数据帧中完成的工作保存到数据库中 2.4 小结 第3章 数据帧的重要作用 3.1 数据帧在Spark中的基本作用 3.1.1 数据帧的组织 3.1.2 不变性并非贬低之词 3.2 通过示例演示数据帧的使用 3.2.1 简单提取CSV后的数据帧 3.2.2 数据存储在分区中 3.2.3 挖掘模式 3.2.4 提取JSON后的数据帧 3.2.5 合并两个数据帧 3.3 数据帧Dataset 3.3.1 重用POJO 3.3.2 创建字符串数据集 3.3.3 来回转换 3.4 数据帧的祖先:RDD 3.5 小结 第4章 Spark的“惰性”本质 4.1 现实中懒惰但高效的示例 4.2 懒惰但高效的Spark示例 4.2.1 查看数据转换和数据操作的结果 4.2.2 数据转换的过程,逐步进行 4.2.3 数据转换/操作流程的后台代码 4.2.4 在182毫秒内创建700多万个数据点的奥秘 4.2.5 操作计时背后的奥秘 4.3 与RDBMS和传统应用程序进行比较 4.3.1 使用青少年生育率数据集 4.3.2 分析传统应用程序和Spark应用程序之间的区别 4.4 对于以数据为中心的应用程序而言,Spark的表现出乎意料 4.5 Catalyst是应用程序的催化器 4.6 小结 第5章 构建一个用于部署的简单应用程序 5.1 无数据提取的示例 5.1.1 计算π 5.1.2 计算近似值π的代码 5.1.3 Java中的lambda函数是什么 5.1.4 使用lambda函数估算π 5.2 与Spark交互 5.2.1 本地模式 5.2.2 集群模式 5.2.3 Scala和Python的交互模式 5.3 小结 第6章 部署简单的应用程序 6.1 示例之外:组件的作用 6.1.1 快速浏览组件及其之间的交互 6.1.2 Spark架构的故障排除技巧 6.1.3 知识拓展 6.2 构建集群 6.2.1 如何构建集群 6.2.2 设置环境 6.3 构建应用程序,在集群上运行 6.3.1 构建应用程序的超级JAR 6.3.2 使用Git和Maven构建应用程序 6.4 在集群上运行应用程序 6.4.1 提交超级JAR 6.4.2 运行应用程序 6.4.3 分析Spark的用户界面 6.5 小结 第Ⅱ部分 数据提取 第7章 从文件中提取数据 7.1 解析器的常见行为 7.2 从CSV中提取数据(比较复杂) 7.2.1 预期输出 7.2.2 代码 7.3 使用已知模式提取CSV 7.3.1 预期输出 7.3.2 代码 7.4 提取JSON文件 7.4.1 预期输出 7.4.2 代码 7.5 提取多行JSON文件 7.5.1 预期输出 7.5.2 代码 7.6 提取XML文件 7.6.1 预期输出 7.6.2 代码 7.7 提取文本文件 7.7.1 预期输出 7.7.2 代码 7.8 用于大数据的文件格式 7.8.1 传统文件格式的问题 7.8.2 Avro是基于模式的序列化格式 7.8.3 ORC是一种列式存储格式 7.8.4 Parquet也是一种列式存储格式 7.8.5 比较Avro、ORC和Parquet 7.9 提取Avro、ORC和Parquet文件 7.9.1 提取Avro 7.9.2 提取ORC 7.9.3 提取Parquet 7.9.4 用于提取Avro、ORC或Parquet的参考表格 7.10 小结 第8章 从数据库中提取数据 8.1 从关系数据库中提取数据 8.1.1 数据库连接备忘录 8.1.2 了解示例中使用的数据 8.1.3 预期输出 8.1.4 代码 8.1.5 可替代的代码 8.2 dialect的作用 8.2.1 什么是dialect 8.2.2 Spark提供的JDBC dialect 8.2.3 构建自定义dialect 8.3 高级查询和提取 8.3.1 使用WHERE子句进行过滤 8.3.2 在数据库中连接数据 8.3.3 执行数据提取和分区 8.3.4 高级功能总结 8.4 从Elasticsearch中提取数据 8.4.1 数据流 8.4.2 Spark提取的NYC餐馆数据集 8.4.3 从 Elasticsearch中提取NYC餐馆数据集的代码 8.5 小结 第9章 数|
序言 本书翻译于新冠疫情在 全世界肆虐之时,可谓“生 于忧患”。短短一年半的时 间,全世界数不胜数的人感 染了新冠肺炎,甚至死在病 毒的攻击之下。 古语有云:“殷忧启圣, 多难兴邦。”任何事物的发 展都是辩证的。纵观人类与 病毒纠葛的历史,每次疫情 的暴发,都深刻改变了人类 文化、经济和军事的发展进 程。例如,14世纪的黑死病 造成了西欧崛起,15世纪末 美洲天花带来了全球降温, 18世纪末黄热病结束了法国 在海地的殖民统治,19世纪 非洲牛瘟加速了欧洲殖民扩 张,等等。而本次的新冠大 流行依然在蔓延之中,疫苗 的快速研发似乎让人们看到 了隧道尽头的曙光,但是由 于变异病毒的出理。人マ陷 入了名和不确定之中。 值此鱼游沸鼎之际,身 处海外的我,在YouTube上 观看各路专家、网红对如何 防治病毒,以及人类如何与 自然共存,议论纷纷,莫衷 一是。在各种分析过程中, 专家们最常见的做法就是引 用各种数据。根据概率论的 大数定律,数据量越大,剖 分得越细致,所得到的分析 结果就越有说服力。 大数据、云计算、人工 智能,是当今计算领域发展 的三驾马车。云计算为大数 据提供了存储和运算之所, 人工智能为云计算提供了算 法逻辑,而所有这一切都要 建立在Spark的大数据处理 框架的基础之上。在介绍 Spark之前回顾集群计算的 历史,我们不得不谈谈 MapReduce和 Hadop,如 果没有巨人的肩膀可供站立 ,Spark不可能如此成功。 Spark基于内存计算,整 合了内存计算单元,提高了 大数据处理的实时性。它兼 具高容错性和可伸缩性,因 此相对于Hadoop的集群处 理方法,Spark在性能方面 更具优势。从另一角度看, Spark可被看作 MapReduce 的一种扩展。在计算的各个 阶段,MapReduce 无法进 行有效的资源共享,因此不 擅长迭代式、交互式和流式 的计算工作。针对这一点, Spark创造性地引入了RDD (弹性分布式数据集),实 现了计算过程中的资源共享 。因为采用了弹性内存分布 式数据集,所以Spark不仅 能提供交互式查询,还可优 化迭代工作的负载。 本书循序渐进地向读者 介绍Spark 的历史渊源和运 作原理,并利用各种示例生 动展示Spark 的各种应用。 本书面向数据工程师和数据 分析师。Spark的技术繁复 庞杂,我们很难在一时之间 掌握,因此读者要时常温故 而知新,在实践中学习,在 学习中实践,这样循环反复 ,才能学有所成。 本书成书于“危难之际” ,得到了清华大学出版社的 领导和编辑们的信任和鼎力 支持。在此,要特别感谢他 们的耐心和帮助。在我翻译 本书的过程中,就读于西交 利物浦大学大数据专业的袁 于博同学,也给予了帮助, 在此表示感谢。 译者才疏学浅,见闻浅 薄,言辞多有不足之处,还 望谅解并不吝指正。 林赐 2021年10月3日 于加拿大渥太华大学 |