GraphX是Apache Spark的一个功能强大的图处理APl,用于分析大型数据集。GraphX为你提供了前所未有的速度和能力,可用于运行大规模并行图算法和机器学习算法。
由美国迈克尔·S.马拉克和罗宾·伊斯特所合著、时金魁和黄光远共同翻译的《Spark GraphX实战(精)》一开始描绘了图计算的应用场景,提供了一些基础示例教你如何交互式地使用GraphX。本书还清晰地介绍了如何从常规数据构建大图,然后研究了一些问题及如何用图算法和图架构解决这些问题。通过阅读本书,你将了解到用于增强应用程序的实用技术及如何将机器学习算法应用于图数据。
本书包括:◎了解图技术;◎使用GraDhX API;◎为大图开发图算法;◎用于图的机器学习算法;◎图的可视化。
通过阅读本书,即使读者没有Spark和Scala基础也可以很自然地写出应用代码。
由美国迈克尔·S.马拉克和罗宾·伊斯特所合著、时金魁和黄光远共同翻译的《Spark GraphX实战(精)》是一本Spark GraphX入门书籍。前5章为基础内容,即使读者对Spark、GraphX、Scala不熟悉,也能快速上手;后5章为图计算进阶,主要是图算法和机器学习算法的相关内容。专门讲图计算的书很少,本书在第2、3、4章介绍了图的基础知识、GraphX基础知识、GraphX内置的图算法。第6章到第10章,主要介绍了GraphX之外的图算法、机器学习、图工具、GraphX监控和优化、GraphX的能力增强等实用技能。第9章和第10章主要介绍性能调优和监控,主要面向生产环境,有不少可以借鉴的技巧。
本书面向对图计算感兴趣的读者,旨在帮助读者掌握Spark GraphX的相关知识及其应用。
序言
致谢
关于本书
关于封面插图
第1部分 Spark和图
1 两项重要的技术:Spark和图
1.1 Spark:超越Hadoop MapReduce
1.1.1 模糊的大数据定义
1.1.2 Hadoop:Spark之前的世界
1.1.3 Spark:内存中的 MapReduce处理
1.2 图:挖掘关系中的含义
1.2.1 图的应用
1.2.2 图数据的类型
1.2.3 普通的关系型数据库在图方面的不足
1.3 把快如闪电的图处理放到一起:Spark GraphX
1.3.1 图的属性:增加丰富性
1.3.2 图的分区:当图变为大数据集时
1.3.3 GraphX允许选择:图并行还是数据并行
1.3.4 GraphX支持的各种数据处理方式
1.3.5 GraphX与其他图系统
1.3.6 图存储:分布式文件存储与图数据库
1.4 小结
2 GraphX快速入门
2.1 准备开始并准备数据
2.2 用Spark Shell做GraphX交互式查询
2.3 PageRank算法示例
2.4 小结
3 基础知识
3.1 Scala-Spark的原生编程语言
3.1.1 Scala的理念:简洁和表现力
3.1.2 函数式编程
3.1.3 类型推断
3.1.4 类的声明
3.1.5 map和reduce
3.1.6 一切皆是“函数”
3.1.7 与Java的互操作性
3.2 Spark
3.2.1 分布式内存数据:RDD
3.2.2 延迟求值
3.2.3 集群要求和术语解释
3.2.4 序列化
3.2.5 常用的RDD操作
3.2.6 Spark和SBT初步
3.3 图术语解释
3.3.1 基础
3.3.2 RDF图和属性图
3.3.3 邻接矩阵
3.3.4 图查询系统
3.4 小结
第2部分 连接顶点
4 GraphX基础
4.1 顶点对象与边对象
4.2 mapping操作
4.2.1 简单的图转换
4.2.2 Map/Reduce
4.2.3 迭代的Map/Reduce
4.3 序列化/反序列化
4.3.1 读/写二进制格式的数据
4.3.2 JSON格式
4.3.3 Gephi可视化软件的GEXF格式
4.4 图生成
4.4.1 确定的图
4.4.2 随机图
4.5 Pregel API
4.6 小结
5 内置图算法
5.1 找出重要的图节点:网页排名
5.1.1 PageRank算法解释
5.1.2 在GraphX中使用PageRank
5.1.3 个性化的PageRank
5.2 衡量连通性:三角形数
5.2.1 三角形关系的用法
5.2.2 Slashdot朋友和反对者的用户关系示例
5.3 查找最少的跳跃:最短路径
5.4 找到孤岛人群:连通组件
5.4.1 预测社交圈子
5.5 受欢迎的回馈:增强连通组件
5.6 社区发现算法:标签传播
5.7 小结
6 其他有用的图算法
6.1 你自己的GPS:有权值的最短路径
6.2 旅行推销员问题:贪心算法
6.3 路径规划工具:最小生成树
6.3.1 基于Word2Vec的推导分类法和最小生成树
6.4 小结
7 机器学习
7.1 监督、无监督、半监督学习
7.2 影片推荐:SVDPlusPlus
7.2.1 公式解释
7.3 在MLlib中使用GraphX
7.3.1 主题聚类:隐含狄利克雷分布
7.3.2 垃圾信息检测:LogisticRegressionWithSGD
7.3.3 使用幂迭代聚类进行图像分割(计算机视觉)
7.4 穷人(简化版)的训练数据:基于图的半监督学习
7.4.1 K近邻图构建
7.4.2 半监督学习标签传播算法
7.5 小结
第3部分 更多内容
8 缺失的算法
8.1 缺失的基本图操作
8.1.1 通用意义上的子图
8.1.2 图合并
8.2 读取RDF图文件
8.2.1 顶点匹配以及图构建
8.2.2 使用IndexedRDD和RDD HashMap来提升性能
8.3 穷人(简化版)的图同构:找到Wikipedia缺失的信息
8.4 全局聚类系数:连通性比较
8.5 小结
9 性能和监控
9.1 监控Spark应用
9.1.1 Spark如何运行应用
9.1.2 用Spark监控来了解你的应用的运行时信息
9.1.3 history server
9.2 Spark配置
9.2.1 充分利用全部CPU资源
9.3 Spark性能调优
9.3.1 用缓存和持久化来加速Spark
9.3.2 checkpointing
9.3.3 通过序列化降低内存压力
9.4 图分区
9.5 小结
10 更多语言以及工具
10.1 在GraphX中使用除Scala外的其他语言
10.1.1 在GraphX中使用Java 7
10.1.2 在GraphX中使用Java 8
10.1.3 未来GraphX是否会支持Python或者R
10.2 其他可视化工具:Apache Zeppelin和d3.js
10.3 类似一个数据库:Spark Job Server
10.3.1 示例:查询Slashdot好友的分离程度
10.3.2 更多使用Spark Job Server的例子
10.4 通过GraphFrames在Spark的图上使用SQL
10.4.1 GraphFrames和GraphX的互操作性
10.4.2 使用 SQL进行便捷、高性能的操作
10.4.3 使用 Cypher语言的子集来进行顶点搜索
10.4.4 稍微复杂一些的YAGO图同构搜索
10.5 小结
附录A 安装Spark
附录B Gephi可视化软件
附录C 更多资源
附录D 本书中的Scala小贴士