From 7a3bc221e87a5e73acc9094fd71107af2fe71575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=A8=E4=BF=9D=E6=9C=9F?= <2550420029@qq.com> Date: Thu, 7 Nov 2019 16:05:40 +0800 Subject: [PATCH 1/6] chapter4 --- chapter4/4.2SparkGraphX计算生成最短路径.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/chapter4/4.2SparkGraphX计算生成最短路径.md b/chapter4/4.2SparkGraphX计算生成最短路径.md index 5e5bb0c..9edb1a7 100644 --- a/chapter4/4.2SparkGraphX计算生成最短路径.md +++ b/chapter4/4.2SparkGraphX计算生成最短路径.md @@ -110,9 +110,12 @@ initialGraph.pregel( // 激活态的节点调用该方法发送消息 // 将上一个节点和当前节点的属性添加到array中。可以理解将迭代的节点都添加到array中 var array = new ArrayBuffer[Long]() - println(edgeTriplet.srcAttr._1 +"|"+edgeTriplet.dstAttr._1) array ++= edgeTriplet.srcAttr._1 - array ++= edgeTriplet.dstAttr._1 + val dstarr = edgeTriplet.dstAttr._1 + if (dstarr.length>1) + array +=dstarr(dstarr.length-1) + else + array ++= edgeTriplet.dstAttr._1 // 相邻点接收到信息,将消息中的值与自身的值做比较,决定是否更改自身的值,每个更改过值的点将被激活 if(edgeTriplet.srcAttr._2 + edgeTriplet.attr < edgeTriplet.dstAttr._2) { Iterator((edgeTriplet.dstId, (array,edgeTriplet.srcAttr._2 + edgeTriplet.attr ))) From e3102e43ea435ed073ddcc841e000525a81b3f64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=A8=E4=BF=9D=E6=9C=9F?= <2550420029@qq.com> Date: Thu, 7 Nov 2019 16:17:12 +0800 Subject: [PATCH 2/6] chapter4 --- chapter4/4.1SparkGraphX定义图结构.md | 1 + chapter4/4.2SparkGraphX计算生成最短路径.md | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/chapter4/4.1SparkGraphX定义图结构.md b/chapter4/4.1SparkGraphX定义图结构.md index c8b9325..763ee40 100644 --- a/chapter4/4.1SparkGraphX定义图结构.md +++ b/chapter4/4.1SparkGraphX定义图结构.md @@ -19,6 +19,7 @@ > `GraphX`中有一个重要概念,所有的边都有一个方向,那么图就是有向图,如果忽略边的方向,就是无向图。 **有环图和无环图** + 有环图是包含循环的,一系列顶点构成一个环。无环图没有环。如果不关心终止条件,算法可能永远在环上执行,无法退出。  diff --git a/chapter4/4.2SparkGraphX计算生成最短路径.md b/chapter4/4.2SparkGraphX计算生成最短路径.md index 9edb1a7..eb47b1f 100644 --- a/chapter4/4.2SparkGraphX计算生成最短路径.md +++ b/chapter4/4.2SparkGraphX计算生成最短路径.md @@ -65,7 +65,7 @@ ## 4.2.2 使用 GraphX 计算生成最短路径 -之前我们已经使用`GraphX`定义了图结构。假设我们的总站点为`1`号站点,现想从总站点派出`7`辆补给车运送军用物资给其它补给站点,需要我们对其道路进行规划,计算如何从起始点到目的地以最短距离运送我们的军用物资。(参照上一章节图结构) +之前我们已经使用`GraphX`定义了图结构。假设我们的总站点为`1`号站点,现想从总站点派出`7`辆补给车运送军用物资给其它补给站点,需要我们对其道路进行规划,计算如何从起始点到目的地以最短距离运送我们的军用物资(参照上一章节图结构)。  @@ -151,7 +151,7 @@ initialGraph.pregel( ``` -## 4.2.3 使用 Python GraphFrames定义了图结构 +## 4.2.3 使用 Python GraphFrames定义图结构 由于`GraphX`基于`RDD API`,不支持`Python API`,那么我们想用`Python`做图计算的时候该怎么办呢?这时候,我们可以使用 `GraphFrames`定义图结构。该类库是构建在`DataFrame`之上,它既能利用`DataFrame`良好的扩展性和强大的性能,同时也为`Scala`、`Java`和`Python提`供了统一的图处理`API`。 示例代码如下: From 050d237f396b2815903a74cf6242b15c614e66d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=A8=E4=BF=9D=E6=9C=9F?= <2550420029@qq.com> Date: Thu, 7 Nov 2019 16:32:43 +0800 Subject: [PATCH 3/6] chapter4 --- chapter4/4.1SparkGraphX定义图结构.md | 5 ++++- chapter4/4.2SparkGraphX计算生成最短路径.md | 5 ++++- chapter4/4Spark图数据计算简介.md | 4 +++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/chapter4/4.1SparkGraphX定义图结构.md b/chapter4/4.1SparkGraphX定义图结构.md index 763ee40..88c2922 100644 --- a/chapter4/4.1SparkGraphX定义图结构.md +++ b/chapter4/4.1SparkGraphX定义图结构.md @@ -37,7 +37,10 @@ ### 4.1.3 Spark Graphx 定义图结构 假设我们要使用`Graphx`项目构造一个由军事补给站组成的属性图。顶点属性包含`ID`和补给站名称,各顶点间的关系由线路构成。生成其属性图关系如下: - + +
+
+
+
+
+
+
+
+
@@ -12,7 +14,7 @@
### 1.4.2 Python安装
-在DOC命令行窗口输入python出现下图所示即表示已经安装成功。如未安装成功,请自行百度。本教程所使用的python版本需要使用python2.7版本以上。
+在`DOC`命令行窗口输入`Python`出现下图所示即表示已经安装成功。如未安装成功,请自行百度。本教程所使用的`Python`版本需要使用`python2.7`版本以上。
@@ -22,7 +24,8 @@
### 1.4.3 scala安装
-本教程所使用的python版本推荐使用scala2.11.x版本。
+本教程所用`Spark`版本推荐使用`scala2.11.x`版本。
+
打开官网下载地址 下载对应安装包。
下载页面的底部点击如下所示红框处即可下载。
@@ -33,7 +36,7 @@
-解压配置环境变量,在DOC命令行窗口输入scala出现下图所示即表示已经安装成功。
+解压配置环境变量,在`DOC`命令行窗口输入`scala`出现下图所示即表示已经安装成功。
@@ -46,7 +49,7 @@
到`Spark`官网:下载地址 下载
`Hadoop`版本为`2.7`,`Spark`版本为`2.3.4`的`spark`安装包。
-解压配置环境变量,在DOC命令行窗口输入spark-shell出现下图所示即表示已经安装成功(图示报错不影响spark运行,该报错表示未安装hadoop)。
+解压配置环境变量,在`DOC`命令行窗口输入`spark-shell`出现下图所示即表示已经安装成功(图示报错不影响`Spark`运行,该报错表示未安装`Hadoop`)。
@@ -57,7 +60,7 @@
### pycharm环境安装
-1.打开pycharm,创建一个项目,如下图;
+1.打开`pycharm`,创建一个项目,如下图;
@@ -65,10 +68,10 @@
-2.添加pyspark.zip和py4j包到项目中(这两个文件在spark安装目录\python\lib中)
+2.添加`pyspark.zip`和`py4j`包到项目中(这两个文件在`Spark`安装目录`\python\lib`中)
-依次点击 file >> setting >> Project:pspark >> Project Structure
+依次点击:`file >> setting >> Project:pspark >> Project Structure`
@@ -76,7 +79,7 @@
-3.新建一个python文件,执行以下代码,输出了你的spark版本无报错即安装成功了。
+3.新建一个`python`文件,执行以下代码,输出了你的`Spark`版本无报错即安装成功了。
```
from pyspark.sql import SparkSession
@@ -91,3 +94,7 @@ print(spark.version)
```
+
+
+
+