Spark- GraphFrames 如何在connectedComponents中使用组件ID

Spark- GraphFrames How to use the component ID in connectedComponents

我试图找到所有连接的组件(在这个例子中,4 连接到 100,2 连接到 200 等)我使用 val g2 = GraphFrame(v2, e2) val result2 = g2.connectedComponents.run() 并且 returns 节点一个组件 ID。我的问题是,如何使用此 ID 查看所有连接的节点?如何找出这个id属于哪个节点?非常感谢。我对此很陌生。

val v2 = sqlContext.createDataFrame(List(
         ("a",1),
        ("b", 2),
        ("c", 3),
        ("d", 4),
       ("e", 100),
        ("f", 200),
        ("g", 300),
         ("h", 400)
  )).toDF("nodes", "id")


val e2= sqlContext.createDataFrame(List(
         (4,100, "friend"),
         (2, 200, "follow"),
         (3, 300, "follow"),
         (4, 400, "follow"),
         (1, 100, "follow"),
          (1,400, "friend")

  )).toDF("src", "dst", "relationship")

在此示例中,我希望看到以下连接

----+----+
|   4|   400|
|   4|   100|
|   1|   400|
|   1|   100|

这是现在显示的结果
(1,1),(2,2),(3,1),(4,1), (100,1) (200,2) (300,3)(400,1)。我如何查看所有连接?

您已将 "a"、"b"、"c"... 声明为图的节点 ID,但后来使用 1、2、3... 作为节点 ID 以定义边。

您应该将节点 ID 更改为数字:1,2,3.. 在创建顶点数据框时,将该列命名为 "id" :

val v2 = sqlContext.createDataFrame(List(
         ("a",1),
        ("b", 2),
        ("c", 3),
        ("d", 4),
       ("e", 100),
        ("f", 200),
        ("g", 300),
         ("h", 400)
  )).toDF("nodes", "id")

这应该会给你想要的结果。