当前位置: 首页 > 知识库问答 >
问题:

GraphX不适用于相对较大的图

满子实
2023-03-14

我不能处理230m边的图形。我克隆了Apache.Spark,构建了它,然后在Cluster上试用。

-5 machines (each has 12 cores/32GB RAM)
-'spark.executor.memory' ==  25g
-'spark.driver.memory' == 3g
sourceVertexId destinationVertexId
object Canonical {
  def main(args: Array[String]) {
    val numberOfArguments = 3
    require(args.length == numberOfArguments, s"""Wrong argument number. Should be $numberOfArguments . 
                                                                           |Usage: <path_to_grpah> <partiotioner_name> <minEdgePartitions> """.stripMargin)
    var graph: Graph[Int, Int] = null
    val nameOfGraph = args(0).substring(args(0).lastIndexOf("/") + 1)
    val partitionerName = args(1)
    val minEdgePartitions = args(2).toInt
    val sc = new SparkContext(new SparkConf()
                       .setSparkHome(System.getenv("SPARK_HOME"))
                       .setAppName(s" partitioning | $nameOfGraph | $partitionerName | $minEdgePartitions parts ")
                       .setJars(SparkContext.jarOfClass(this.getClass).toList))
    graph = GraphLoader.edgeListFile(sc, args(0), false, edgeStorageLevel = StorageLevel.MEMORY_AND_DISK,
                                                       vertexStorageLevel = StorageLevel.MEMORY_AND_DISK, minEdgePartitions = minEdgePartitions)
    graph = graph.partitionBy(PartitionStrategy.fromString(partitionerName))
    println(graph.edges.collect.length)
    println(graph.vertices.collect.length)
  }
}
-4 workers (each has 12 cores/32GB RAM)
-1 master with driver program (each has 12 cores/32GB RAM)
-'spark.executor.memory' ==  25g
-'spark.driver.memory' == 25g

而且,收集所有的顶点和边来计算它们也不是一个好主意。这样做很容易:graph.vertices.countgraph.edges.count

共有1个答案

轩辕越泽
2023-03-14

我建议您进行二进制搜索,以找到集群可以处理的最大数据大小。取50%的图形,看看这是否有效。如果是,尝试75%。等。

我的经验法则是,对于给定大小的输入,你需要20-30倍的内存。对于4.5GB,这表明限制将在100 GB左右。你正好有那么多。我没有使用GraphX的经验:它可能会增加内存使用的另一个倍增器。在我看来,你只是记忆力不够。

 类似资料:
  • 问题内容: 我在其中动态添加了许多内容。我面临的问题是,每当我单独将onTouch侦听器应用于其时,它都会检测到触摸,但是当我向相对布局中添加触摸时,它永远不会响应。 此代码可以很好地检测触摸事件: 但是,当我在myRelativeLayout中添加所有这些TextViews时: 现在,永远不会调用onTouchListener。为什么呢? 问题答案: 导致您的布局,而不是触发触摸事件。尝试删除它

  • 问题内容: 我尝试从中创建对象并将文件的相对值传递给其构造函数,但是它无法正常工作并抛出 问题答案: 在一开始会使得绝对路径,而不是相对的。 尝试移除前导,因此请更换: 与: 如果仍然遇到问题,请通过检查当前目录来确保程序从您认为的位置运行:

  • 我试图填充一个相对的布局与4卡视图在它。每个cardview由一个图像和一个文本视图组成。我将所有卡片视图包装在一个相对布局中,将相对布局包装在一个滚动视图中。不管用。如果我移除scrollview,它可以正常工作。尝试将scrollview放入相对布局中。但没有工作代码:

  • 背景: 最近我一直在开发一个程序,该程序对输入数据文件(用户以完整路径或名称的形式给出,如果它位于程序创建的名为inputFiles的文件夹中)执行一些数据分析并吐出一堆输出数据文件(使用CSV)。 问题: 我遇到的问题是,当我运行时。jar在我的Windows机器上,它将创建3个文件夹(InputFiles、TempFiles和OutPutFiles),但当程序在Mac上时,GUI会启动,但不会

  • 问题内容: 因此,我正在研究比较器问题,但无法弄清楚为什么在第一堂课中给我以下错误: 数组类型中的方法sort(T [],Comparator)不适用于参数(ArrayList,CalorieComparator) 餐厅等级: CalorieComparator类: 问题答案: An 与Java数组不同;由于您使用的是列表,因此对您无济于事。 考虑代替。

  • 问题内容: 这个问题不太可能帮助将来的访客。它仅与较小的地理区域,特定的时间段或格外狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助,请访问帮助中心。 7年前关闭。 我尝试从中创建对象并将文件的相对值传递给其构造函数,但是它无法正常工作并抛出 问题答案: 在一开始会使得绝对路径,而不是相对的。 尝试移除前导,因此请更换: 与: 如果仍然遇到问题,请通过检查当