Apache Spark:如何处理层次数据

时间:2015-11-27 16:54:35

标签: apache-spark

我很不高兴。我想知道spark是否可以像树一样处理数据的层次结构。 (不使用graphx) 让我们说我有一个用平面文件表示的树

  • 键值
  • A1 P1
  • A1 P2
  • P1 S1
  • P1 S2
  • P1 S3
  • P2 S4
  • S1 C1
  • S1 C2

有没有办法强制Spark按以下顺序减少:

  • S1(C1 + C2)
  • P1(S1 + S2 + S3)和P2(S4)
  • 然后一旦P1和P2减少
  • A1(P1 + P2)

如果我使用" reduceByKey"订单是随机的。 谢谢你的提示

1 个答案:

答案 0 :(得分:0)

您可以自己编写代码来执行此操作,但AFAIK您无法通过API执行此操作。这样做的方法将根据用例和图的特征(例如,大量边缘,密集计算,大节点/数据)而变化

假设节点数量较少,一种方法是逐级处理图形。为此,您需要将图层次结构信息提取到Broadcast变量,并应用一组联合和过滤器,直到您计算出顶级节点。

正如@ zero323所说,如果你是Spark新手,这可能有点棘手,但在我的用例中,它完美地聚合了+80000个节点和100s GB的底层数据。

考虑它的方法是每次调用Spark聚合一个图表级别。因此,如果图表的深度很高或者您有数十亿个节点,则此方法将无效。

相关问题