首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图形框架和BFS

图形框架和BFS
EN

Stack Overflow用户
提问于 2021-07-13 08:10:29
回答 1查看 35关注 0票数 0

我在理解Graphframe上的BFS时遇到了一些问题。我正在试图找到“所有的父亲”--在图表中没有父母的那个人。

看,我有这个数据帧:

代码语言:javascript
复制
val df = sqlContext.createDataFrame(List(
  ("153030152492012801800", ""),
  ("153030152492012801845", ""),
  ("153030152492013801220","153030152492012801845"),
  ("153030152492013800151","153030152492012801845"),
  ("153030152492014800546","153030152492012801845"),
  ("153030152492013800497", "153030152492013800151"),
  ("153030152492013801860", "153030152492013800151"),
  ("153030152492014800038", "153030152492013801860"),
  ("153030152492014801015", "153030152492014800038"),
  ("153030152492014801235", "153030152492014801015")
  )).toDF("id", "parent")

我将我的Graph构建为:

代码语言:javascript
复制
val df_vertices = df.selectExpr("id", "parent")
val df_edges = df.withColumnRenamed("id", "src").withColumnRenamed("parent", "dst").withColumn("relation", lit("parent"))
val g  = GraphFrame(df_vertices, df_edges)

最后,我以如下方式运行BFS:

代码语言:javascript
复制
g.bfs.fromExpr("id = 153030152492013800151").toExpr("parent = ''").run().show(false)

但我得到的是:

代码语言:javascript
复制
+----------------------------------------------+------------------------------------------------------+-------------------------+
|from                                          |e0                                                    |to                       |
+----------------------------------------------+------------------------------------------------------+-------------------------+
|[153030152492013801220, 153030152492012801845]|[153030152492013801220, 153030152492012801845, parent]|[153030152492012801845, ]|
|[153030152492013800151, 153030152492012801845]|[153030152492013800151, 153030152492012801845, parent]|[153030152492012801845, ]|
+----------------------------------------------+------------------------------------------------------+-------------------------+

问题是,为什么我会得到第一行,以"153030152492013801220“开头的行?看,这个值不在路径"153030152492013800151“中。那么,为什么会有这样的结果呢?

谢谢大家!

EN

回答 1

Stack Overflow用户

发布于 2021-07-15 07:22:22

我找出了我的错误。问题是"ID“是一个字符串,所以我不得不这样调用BFS:

代码语言:javascript
复制
g.bfs.fromExpr("id = '153030152492013800151'").toExpr("parent = ''").run().show(false)

我张贴了答案,因为graphframe没有显示任何错误。只是想提醒你一下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68355089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档