问题标签 [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.
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 的算法是什么吗?
spark-graphx - 连接运算符中的匹配究竟是什么意思
我很困惑。我正在尝试做一个看起来相当简单的连接操作,但它并没有像我预期的那样工作。我有两个图表,pGraph和cGraph。每个都是通过从 CSV 文件中读取条目来构建的,并且使用的id值是从属性之一生成的。pGraph包括p个顶点,这些顶点用属性完全充实,而cGraph包括c个顶点,它们的定义类似。在pGraph中,使用一致的id值在p个顶点和c个顶点之间定义了边。但是,由于c的属性顶点仅在cGraph中可用,我想将两个图连接在一起,以便c顶点的属性(来自cGraph)和p顶点的属性(来自pGraph)在连接的结果中定义(xGraph)。
这是我认为可以完成此操作的代码:
最终,通过调试,我发现 map 函数根本没有被调用。也就是说pGraph和cGraph中显然没有匹配的顶点。我曾假设如果id值相同,就会有匹配项。但这似乎不是真的。如果匹配基于顶点的两个组件(id 和属性),那么当然不会有匹配,因为在一种情况下,属性为空,而在另一种情况下,它是正确的值。
我发现的连接操作的例子都是微不足道的,因为this和input顶点是相同的,而不是来自不同的图。
有什么建议么?
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 文件提出什么策略,如何更好地存储它们?谢谢。
scala - Spark GraphX:如何仅将一个节点插入到图中
我知道在 GraphX 中,我们可以合并两个图以更新现有网络……但是,更新网络的常规操作是向其中插入单个节点。怎么可能在 GraphX 中进行这样的更新操作?!谢谢 !
apache-spark - 加入顶点时,我是否被迫使用 MEMORY_ONLY 缓存?
看着源头outerJoinVertices
我想知道这是一个错误还是一个功能
问题
如果我的图形/连接的顶点已经通过另一个
StorageLevel
(例如MEMORY_ONLY_SER
)缓存 - 这是导致 的原因org.apache.spark.graphx.impl.ShippableVertexPartitionOps ... WARN ShippableVertexPartitionOps: Joining two VertexPartitions with different indexes is slow.
吗?如果是这种情况,那么这是 Spark 中的错误(来自 1.3.1)吗?如果是的话,找不到关于这个的 JIRA 问题(但我看起来不太难......)
为什么修复这个方法不像为这个方法提供一个新的 StorageLevel 那样简单?
有什么解决方法?(我能想到的一个是用 vertices.join(otherVertices) 和 originalGraph.edges 之类的东西创建一个新的 Graph ......但感觉不对......
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?
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 查询?
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 示例。
任何提示将不胜感激!
apache-spark - Spark GraphX 子图方法生成 null。
我subgraph
用来过滤图形顶点。但是,当我收集顶点时,其中null
有一些值。
我可以保证原始图顶点不包含任何null
值。
apache-spark - Apache Spark GraphX 连接组件
如何使用子图函数来获取仅包含来自特定连接组件的顶点和边的图?假设我知道连通组件 id,最终目标是基于连通组件创建一个新图。我想保留原始图中的顶点属性。