如何计算Spark 2中节点的连接

时间:2018-01-10 11:17:48

标签: scala apache-spark spark-dataframe

我有以下DataFrame df

val df = Seq(
  (1, 0, 1, 0, 0), (1, 4, 1, 0, 4), (2, 2, 1, 2, 2),
  (4, 3, 1, 4, 4), (4, 5, 1, 4, 4)
).toDF("from", "to", "attr", "type_from", "type_to")

+-----+-----+----+---------------+---------------+
|from |to   |attr|type_from      |type_to        |
+-----+-----+----+---------------+---------------+
|    1|    0|   1|              0|              0|
|    1|    4|   1|              0|              4|
|    2|    2|   1|              2|              2|
|    4|    3|   1|              4|              4|
|    4|    5|   1|              4|              4|
+-----+-----+----+---------------+---------------+

仅当from节点的类型与to节点的类型相同(即{{1}的值)时,我才想计算每个节点的输入和输出链接的数量}和type_from)。

应排除type_toto相等的情况。

这是我根据user8371915提出的this answer计算外发链接数量的方法。

from

当然,我可以为传入链接重复相同的计算,然后加入结果。但有没有更短的解决方案?

df
  .where($"type_from" === $"type_to" && $"from" =!= $"to")
  .groupBy($"from" as "nodeId", $"type_from" as "type")
  .agg(count("*") as "numLinks")
  .na.fill(0)
  .show()

0 个答案:

没有答案