问题标签 [spark-graphx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
356 浏览

apache-spark - strongConnectedComponents (GraphX Spark) 中的参数 numIter

我正在使用指南https://spark.apache.org/docs/latest/graphx-programming-guide.html让自己熟悉 Spark 的 GraphX 库 但是,阅读这篇文章(并搜索互联网)我无法意识到是函数 strongConnectedComponents 的输入参数numIter : def strongConnectedComponents(numIter: Int): Graph[VertexID, ED]

您能帮我理解这里的含义以及 GraphX 用于 SCC 的算法是什么吗?

0 投票
1 回答
228 浏览

spark-graphx - 连接运算符中的匹配究竟是什么意思

我很困惑。我正在尝试做一个看起来相当简单的连接操作,但它并没有像我预期的那样工作。我有两个图表,pGraphcGraph。每个都是通过从 CSV 文件中读取条目来构建的,并且使用的id值是从属性之一生成的。pGraph包括p个顶点,这些顶点用属性完全充实,而cGraph包括c个顶点,它们的定义类似。在pGraph中,使用一致的id值在p个顶点和c个顶点之间定义了边。但是,由于c的属性顶点仅在cGraph中可用,我想将两个图连接在一起,以便c顶点的属性(来自cGraph)和p顶点的属性(来自pGraph)在连接的结果中定义(xGraph)。

这是我认为可以完成此操作的代码:

最终,通过调试,我发现 map 函数根本没有被调用。也就是说pGraphcGraph中显然没有匹配的顶点。我曾假设如果id值相同,就会有匹配项。但这似乎不是真的。如果匹配基于顶点的两个组件(id 和属性),那么当然不会有匹配,因为在一种情况下,属性为空,而在另一种情况下,它是正确的值。

我发现的连接操作的例子都是微不足道的,因为thisinput顶点是相同的,而不是来自不同的图。

有什么建议么?

0 投票
1 回答
705 浏览

java - Apache Spark GraphX java.lang.ArrayIndexOutOfBoundsException

我正在尝试了解如何使用 Spark-GraphX,但总是遇到一些问题,所以也许有人可以建议我阅读什么等。我尝试阅读 Spark 文档和 Learning Spark - O'Reilly Media 书籍,但找不到任何解释我们需要多少内存来处理不同大小的网络等。

对于我的测试,我使用了几个示例数据集。我在 Spark shell 的 1 个主节点(~16Gb RAM)上运行它们:

和 3-5 名工人(每 1 台独立机器 1 名工人,具有 4Gb RAM):

然后从 Spark Shell 我运行我的 scala 脚本(未编译):

我还没有使用 HDFS,只是将数据集文件复制到每台机器上(当然路径名相同)。在像 zachary club 这样的小型网络上,甚至更大的 ~256 Mb 网络上(在增加驱动程序内存参数之后)我能够计算三角形、楔形等。

现在尝试处理 750+ Mb 网络并出现错误。例如,我有 2 列格式的 Wikipedia 链接数据集(link_from link_to),750Mb。尝试加载它:

并得到一个错误:

实际上,我需要使用大小为 >>1Tb 的数据集,但即使在较小的数据集上也会出错。我究竟做错了什么?内存限制是多少?您可以为 >>1Tb 文件提出什么策略,如何更好地存储它们?谢谢。

0 投票
1 回答
1065 浏览

scala - Spark GraphX:如何仅将一个节点插入到图中

我知道在 GraphX 中,我们可以合并两个图以更新现有网络……但是,更新网络的常规操作是向其中插入单个节点。怎么可能在 GraphX 中进行这样的更新操作?!谢谢 !

0 投票
1 回答
268 浏览

apache-spark - 加入顶点时,我是否被迫使用 MEMORY_ONLY 缓存?

看着源头outerJoinVertices

我想知道这是一个错误还是一个功能

问题

  1. 如果我的图形/连接的顶点已经通过另一个StorageLevel(例如MEMORY_ONLY_SER)缓存 - 这是导致 的原因org.apache.spark.graphx.impl.ShippableVertexPartitionOps ... WARN ShippableVertexPartitionOps: Joining two VertexPartitions with different indexes is slow.吗?

  2. 如果是这种情况,那么这是 Spark 中的错误(来自 1.3.1)吗?如果是的话,找不到关于这个的 JIRA 问题(但我看起来不太难......)

  3. 为什么修复这个方法不像为这个方法提供一个新的 StorageLevel 那样简单?

  4. 有什么解决方法?(我能想到的一个是用 vertices.join(otherVertices) 和 originalGraph.edges 之类的东西创建一个新的 Graph ......但感觉不对......

0 投票
3 回答
1523 浏览

scala - How to filter a mixed-node graph on neighbor vertex types

This question is about Spark GraphX. I want to compute a subgraph by removing nodes that are neighbors of certain other nodes.

Example

[Task] Retain A nodes and B nodes that are not neighbors of C2 nodes.

Input graph:

Output graph:

How to elegantly write a GraphX query that returns the output graph?

0 投票
1 回答
719 浏览

scala - 如何计算同一节点 x 指向的节点 v、w 之间的边

这个问题是关于 Spark GraphX 的。给定一个任意图,我想计算一个新图,它在任意两个节点 v、w 之间添加边,这两个节点都由某个节点 x 指向。新边应包含指向节点作为属性。

也就是说,给定边 (x, v, nil) 和 (x, w, nil) 计算边 (v, w, x) 和 (w, v, x)。

它应该适用于任何图形,并且不需要我事先了解有关图形的任何信息,例如顶点 ID。

例子

[任务] 当被同一节点(例如B)指向时,在节点(例如A,C)之间添加两条有向边。

输入图:

输出图(双向边 = 两条有向边):

如何优雅地编写返回输出图的 GraphX 查询?

0 投票
1 回答
405 浏览

java - Clojure:Spark Graphx 的 Scala/Java 互操作问题

我正在尝试使用 Clojure 和 Flambo 使用 Spark/ GraphX

这是我最终得到的代码:

project.clj文件中:

然后是我的 Clojurecore.clj文件:

当我运行该代码时,我收到以下错误:

免责声明:我没有 Scala 知识。

然后我想可能是因为Flambo我们使用时返回了一个JavaRDD f/parallelize。然后我尝试将 JavaRDD 转换为 GraphX 示例中使用的简单 RDD:

但是我得到了同样的错误,但是对于ParallelCollectionRDD班级......

从那里,我知道可能导致这种情况的原因。Graph 类的Java API 在这里,同一类的 Scala API 在这里

我不清楚的是如何在 Clojure 中有效地使用该类签名:

(Graph是一个抽象类,但我在这个例子中尝试使用GraphImpl)

我想做的是使用 Clojure重新创建那个 Scala 示例。

任何提示将不胜感激!

0 投票
0 回答
243 浏览

apache-spark - Spark GraphX 子图方法生成 null。

subgraph用来过滤图形顶点。但是,当我收集顶点时,其中null有一些值。

我可以保证原始图顶点不包含任何null值。

0 投票
2 回答
5176 浏览

apache-spark - Apache Spark GraphX 连接组件

如何使用子图函数来获取仅包含来自特定连接组件的顶点和边的图?假设我知道连通组件 id,最终目标是基于连通组件创建一个新图。我想保留原始图中的顶点属性。