@@ -155,11 +155,14 @@ object Node2vecAlgo {
155
155
graph = Graph (indexedNodes, indexedEdges)
156
156
.mapVertices[NodeAttr ] {
157
157
case (vertexId, clickNode) =>
158
- val (j, q) = this .setupAlias(clickNode.neighbors)
159
- val nextNodeIndex = this .drawAlias(j, q)
160
- clickNode.path = Array (vertexId, clickNode.neighbors(nextNodeIndex)._1)
161
-
162
- clickNode
158
+ if (clickNode != null ) {
159
+ val (j, q) = this .setupAlias(clickNode.neighbors)
160
+ val nextNodeIndex = this .drawAlias(j, q)
161
+ clickNode.path = Array (vertexId, clickNode.neighbors(nextNodeIndex)._1)
162
+ clickNode
163
+ } else {
164
+ NodeAttr ()
165
+ }
163
166
}
164
167
.mapTriplets { edgeTriplet : EdgeTriplet [NodeAttr , EdgeAttr ] =>
165
168
val (j, q) = this .setupEdgeAlias(bcP.value, bcQ.value)(edgeTriplet.srcId,
@@ -210,11 +213,14 @@ object Node2vecAlgo {
210
213
.map {
211
214
case (edge, ((srcNodeId, pathBuffer), attr)) =>
212
215
try {
213
- val nextNodeIndex = this .drawAlias(attr.J , attr.q)
214
- val nextNodeId = attr.dstNeighbors(nextNodeIndex)
215
- pathBuffer.append(nextNodeId)
216
-
217
- (srcNodeId, pathBuffer)
216
+ if (pathBuffer != null && pathBuffer.nonEmpty && attr.dstNeighbors != null && attr.dstNeighbors.nonEmpty) {
217
+ val nextNodeIndex = this .drawAlias(attr.J , attr.q)
218
+ val nextNodeId = attr.dstNeighbors(nextNodeIndex)
219
+ pathBuffer.append(nextNodeId)
220
+ (srcNodeId, pathBuffer)
221
+ } else {
222
+ (srcNodeId, pathBuffer)
223
+ }
218
224
} catch {
219
225
case e : Exception => throw new RuntimeException (e.getMessage)
220
226
}
0 commit comments