基于Apache Spark的流处理
Gerard Maas, Francois Garillot
陈志鹏 译
出版时间:2021年04月
页数:422
“这本书将带你了解Spark在流处理方面的支持,从早期的 DStream API到后来基于SQL 的Structured Streaming。本书是学习这些知识必备的权威指南。”
——Dean Wampler
Lightbend副总裁、负责快速数据工程建设, 《Programming Scala》的共同作者
利用分析工具可以快速获取商业洞察,为此你需要了解如何对数据进行实时处理。通过这本实用指南,对于熟悉Apache Spark的读者来说,你们将了解如何将这个内存框架应用于流数据。你会发现Spark让你几乎可以像面对批处理作业一样来开发流处理作业。
本书介绍了Apache Spark的理论基础。这本综合指南通过两个部分比较了Spark支持的流处理AP:早期的Spark Streaming和后来的 Structured Streaming。
● 学习流处理的基本概念、研究各种流处理架构。
● 通过具体实例来研究Structured Streaming、深入理解流处理概念。
● 通过Spark Streaming创建并管理流作业,使用其他Spark API与Spark Streaming集成。
● 学习Spark Streaming高级技巧,包括近似算法和机器学习算法。
● 将Apache Spark与其他流处理项目比较,包括Apache Storm、Apache Flink和Apache Kafka Streams。
  1. 前言
  2. 第一部分 Apache Spark流处理的基本原理
  3. 第1章 流处理概述
  4. 什么是流处理
  5. 流处理案例
  6. 分布式流处理
  7. Apache Spark概述
  8. 接下来?
  9. 第2章 流处理模型
  10. 数据源与接收器
  11. 不可变流
  12. 转换与聚合
  13. 窗口聚合
  14. 无状态处理与有状态处理
  15. 有状态的流
  16. 案例:Scala中的本地状态计算
  17. 无状态流,还是有状态流?
  18. 时间效应
  19. 小结
  20. 第3章 流处理架构
  21. 数据平台的组件
  22. 体系模型
  23. 在流处理应用中使用批处理组件
  24. 流处理架构参考
  25. 流处理算法与批处理算法
  26. 小结
  27. 第4章 流处理引擎Apache Spark
  28. 两种API的由来
  29. Spark的内存使用
  30. 延迟
  31. 面向吞吐的数据处理
  32. Spark的多语言API
  33. 快速实现数据分析
  34. 更多关于Spark的内容
  35. 小结
  36. 第5章 Spark分布式处理模型
  37. 通过集群管理器来运行Apache Spark
  38. Spark的集群管理器
  39. 分布式系统的弹性与容错
  40. 数据交付语义
  41. 微批处理与一次处理一个
  42. 微批处理与一次处理一个方式地结合
  43. 动态的批次间隔
  44. Structured Streaming处理模型
  45. 第6章 Spark弹性模型
  46. Spark中的弹性分布式数据集
  47. Spark组件
  48. Spark容错保证
  49. 小结
  50. 参考文献
  51. 第二部分 Structured Streaming
  52. 第7章 Structured Streaming概述
  53. 学习Structured Streaming之前
  54. 批处理分析
  55. 流分析
  56. 小结
  57. 第8章 Structured Streaming编程模型
  58. 初始化Spark实例
  59. source:接收流数据
  60. 流数据的转换
  61. sink:输出结果数据
  62. 小结
  63. 第9章 Structured Streaming实战
  64. 消费流source
  65. 程序逻辑
  66. 写入流sink
  67. 小结
  68. 第10章 Structured Streaming的Source
  69. source概述
  70. 可用的source
  71. 文件source
  72. Kafka source
  73. Socket source
  74. Rate source
  75. 第11章 Structured Streaming的Sink
  76. sink概述
  77. 可用的sink
  78. 文件sink
  79. Kafka sink
  80. 内存sink
  81. 控制台sink
  82. Foreach sink
  83. 第12章 基于事件时间的流处理
  84. Structured Streaming中的事件时间
  85. 事件时间
  86. 处理时间
  87. 水位线
  88. 基于时间的窗口聚合
  89. 记录去重
  90. 小结
  91. 第13章 高级状态操作
  92. 案例:车队管理
  93. 分组状态操作
  94. 使用MapGroupsWithState
  95. 使用FlatMapGroupsWithState
  96. 小结
  97. 第14章 Structured Streaming 应用监控
  98. Spark指标子系统
  99. StreamingQuery实例
  100. StreamingQueryListener接口
  101. 第15章 实验性模块:连续处理与机器学习
  102. 连续处理
  103. 机器学习
  104. 参考文献
  105. 第三部分 Spark Streaming
  106. 第16章 Spark Streaming概述
  107. DStream抽象
  108. Spark Streaming程序结构
  109. 小结
  110. 第17章 Spark Streaming编程模型
  111. RDD,DStream的底层抽象
  112. DStream转换操作
  113. 元素级别的DStream转换
  114. RDD级别的DStream转换
  115. Count操作
  116. 修改结构的转换操作
  117. 小结
  118. 第18章 Spark Streaming执行模型
  119. 整体同步架构
  120. Receiver模型
  121. 无Receiver(Direct)模式
  122. 小结
  123. 第19章 Spark Streaming的Source
  124. source分类
  125. 常用source
  126. 文件source
  127. 队列source
  128. 工作流程
  129. Socket source
  130. Kafka source
  131. 哪里有更多的source
  132. 第20章 Spark Streaming的Sink
  133. 输出操作
  134. 内置的输出操作
  135. 使用foreachRDD编写自定义sink
  136. 第三方输出操作
  137. 第21章 基于时间的流处理
  138. 窗口聚合
  139. 滚动窗口
  140. 滑动窗口
  141. 使用窗口还是较长的批次间隔
  142. 窗口上的reduce操作
  143. 可逆的窗口聚合操作
  144. 流的分片
  145. 小结
  146. 第22章 任意有状态的流处理
  147. 流的状态性
  148. updateStateByKey
  149. updateStateByKey的局限性
  150. 使用mapwithState进行有状态的计算
  151. 使用mapWithState
  152. 使用mapWithState进行基于事件时间的流计算
  153. 第23章 使用Spark SQL
  154. Spark SQL
  155. 在Spark Streaming中使用Spark SQL函数
  156. 静态数据处理
  157. Join优化
  158. 更新流处理程序中的参考数据集
  159. 小结
  160. 第24章 checkpoint机制
  161. checkpoint的使用
  162. DStream的checkpoint机制
  163. 从checkpoint中恢复
  164. checkpoint的代价
  165. checkpoint调优
  166. 第25章 Spark Streaming应用监控
  167. Streaming UI
  168. 通过Streaming UI了解作业性能
  169. 监控REST API
  170. 指标子系统
  171. 内部事件总线
  172. 小结
  173. 第26章 性能调优
  174. Spark Streaming中的性能平衡
  175. 影响作业性能的外部因素
  176. 如何提高性能
  177. 调整批次间隔
  178. 以固定速率对数据摄入限流
  179. 反压
  180. 动态限流
  181. 缓存
  182. 推测执行
  183. 参考文献
  184. 第四部分 Spark Streaming高级技巧
  185. 第27章 流式近似与抽样算法
  186. 准确性、实时性与大数据
  187. 准确性、实时性与大数据之间的三角关系
  188. 近似算法
  189. 哈希与素描
  190. 去重统计:HyperLogLog
  191. 统计元素频率:Count-min Sketch
  192. 排名与分位数:T-Digest算法
  193. 减少元素数量:抽样
  194. 第28章 实时机器学习
  195. 利用朴素贝叶斯进行流分类
  196. 决策树介绍
  197. Hoeffding树
  198. 使用在线K-means进行流聚类
  199. 参考文献
  200. 第五部分 Apache Spark 之外的世界
  201. 第29章 其他分布式实时流处理系统
  202. Apache Storm
  203. Apache Flink
  204. Kafka Streams
  205. 云上的流处理系统
  206. 第30章 展望
  207. 紧随Spark项目
  208. 参加交流会
  209. 贡献Apache Spark项目
  210. 参考文献
  211. 作者介绍
  212. 封面介绍
书名:基于Apache Spark的流处理
译者:陈志鹏 译
国内出版社:中国电力出版社
出版时间:2021年04月
页数:422
书号:978-7-5198-5294-8
原版书书名:Stream Processing with Apache Spark
原版书出版商:O'Reilly Media
Gerard Maas
 
Gerard Maas是Lightbend的首席工程师,致力于将Structured Streaming与其他可扩展的流处理技术无缝地集成到Lightbend平台上。此前他在一家云原生物联网创业公司工作,带领数据处理团队构建流式管道,将Spark Streaming的吞吐量推上了极限。当时还发布了第一篇关于Spark Streaming性能调优的全面指南。
Gerard曾在几家创业公司和大型企业中担任领导角色,构建数据科学管理、云原生物联网平台、电信平台,以及可扩展的API。此外经常在技术会议上发言,并参与贡献各种大大小小的开源项目。Gerard拥有委内瑞拉的西蒙玻利瓦尔大学的计算机工程学位。你可以通过推特@maasg找到他。
 
 
Francois Garillot
 
Francois Garillot住在西雅图,在Facebook从事于分布式计算。于2011在巴黎综合理工学院获得博士学位,曾于2015年在Lightbend从事Spark Streaming反压机制研究。他的兴趣包括类型系统、利用编程语言简化分析的表示方法,热爱Scala、Spark以及阿拉比卡(咖啡豆)烘焙。不工作的时候,喜欢在太平洋西北部的山脉享受生活。
 
 
本书封面上的动物是欧亚喜鹊(学名:Pica pica),遍布于北欧与亚洲,从西班牙、爱尔兰一直到俄罗斯东北部的堪察加半岛。在英语中,鹊(magpie)指的是欧亚喜鹊,不过它们在欧洲、亚洲、中东、北非以及北美各地的鸦族中都有不同的说法。
欧洲喜鹊的雄性和雌性都有引人注目的羽毛。腹部和肩部都是明亮的白色,与光滑、黑色的头部、胸部以及翅膀形成对比。这些黑色区域会根据光线不同闪烁着蓝色或绿色的光泽。雄性喜鹊身长17~18英寸(尾巴约占一半),翼展为20~24英寸;雌性略小一些。喜鹊通常会避开人类,但你可能听过它们响亮的叫声。
欧亚喜鹊是杂食动物。它们以昆虫、腐肉、小型哺乳动物,甚至其他鸟类的幼鸟和蛋、谷物、种子等为食。它们是所有动物中最聪明的一种,拥有像类人猿那样的认知能力:使用工具、记忆、推理以及社会交往。这些特点导致了对喜鹊的一些迷信。欧洲和斯堪的纳维亚文化将它们与偷窃甚至巫术联系起来。在亚洲则相反,人们将它们与好运及客人的光临联系在一起。
虽然欧亚喜鹊种群分布广泛、数量众多,但是O'Reilly出版物封面上的许多动物都濒临灭绝。所有这些动物对世界来说都是很重要的。如果你想了解更多关于如何为它们提供帮助,请访问animals.oreilly.com。
封面的彩色插图由Karen Montgomery根据“Meyers Kleines词典”中的黑白版画创作而成。