前言
自从《深入理解Spark:核心思想与源码分析》一书出版以来,陆续收到很多读者的反馈,笔者为此在第1版第2次印刷之前做了一些勘误。为便于购买了老版本书籍的读者查漏补缺,现将勘误内容整理如下。
勘误内容
1、第20页第11行 “中间输出和结果存储在HDFS”改为了“中间输出和结果存储在磁盘”(如图1所示);
图1
2、第20页第12行 “读写HDFS造成”改为了“读写磁盘造成”(如图1所示);
3、第22页第14行 “要选择Java作为”改为了“要选择Scala作为”(如图2所示);
图2
4、第64页 代码清单3-41标题中的“ExecutorLIRLClassLoader的实现”改为了“ExecutorURLClassLoader的实现”(如图3所示);
图3
5、第123页 图4-8 在判断“失败达到最大次数?”与“开始复制”之间加有向箭头,表示当复制失败未达到最大次数还有继续进行复制(如图4所示);
图4
6、第148页 在解释defaultPartitioner的功能实现的第1)步中,将“partitions_"改为了“partitions"(如图5所示);
图5
7、第149页 在”方法“与”实际“之间增加”首先从CheckPoint(检查点)中获取分区信息。如果还没有设置过CheckPoint,则“(如图6所示);
图6
8、第149页 在MappedRDD前加入”检查点的内容请参阅http://blog.csdn.net/beliefer/article/details/51206980“(如图6所示);
9、第153页 在”dagScheduler的runJob,“后加入”最后当dagScheduler的runJob方法执行完毕后,会调用RDD的doCheckPoint方法保存检查点。有关检查点的具体分析请参阅http://blog.csdn.net/beliefer/article/details/51206980“(如图7所示)。
图7
10、第158页 在”获取RDD的所有Dependency的序列。“后加入”可以看到dependencies方法首先从CheckPoint中获取Dependency,如果尚未设置检查点意味着此Job此前还未执行成功或者未执行,那么调用getDenpencies方法获取依赖。有关检查点的内容请参阅http://blog.csdn.net/beliefer/article/details/51206980“(如图8所示);
图8