GraphX 是 Apache Spark 用于图计算和图并行计算的 API。

灵活性

无缝处理图和集合数据。

GraphX 在单一系统中统一了 ETL、探索性分析和迭代图计算。您可以将相同的数据既视为图又视为集合进行查看,高效地转换图并与 RDD 进行关联 (join),还可以使用 Pregel API 编写自定义的迭代图算法。

graph = Graph(vertices, edges)
messages = spark.textFile("hdfs://...")
graph2 = graph.joinVertices(messages) {
  (id, vertex, msg) => ...
}
在 Scala 中使用 GraphX

速度

拥有与最快的专用图处理系统相媲美的性能。

GraphX 在性能上与最快的图系统竞争,同时保留了 Spark 的灵活性、容错性和易用性。

端到端 PageRank 性能(20 次迭代,37 亿条边)

算法

从不断增长的图算法库中进行选择。

除了高度灵活的 API 外,GraphX 还附带了多种图算法,其中许多是由我们的用户贡献的。

  • PageRank
  • 连通分量 (Connected components)
  • 标签传播 (Label propagation)
  • SVD++
  • 强连通分量 (Strongly connected components)
  • 三角形计数 (Triangle count)

社区

GraphX 是 Apache Spark 项目的一部分,因此它会随着每个 Spark 版本进行测试和更新。

如果您对该库有疑问,请在 Spark 邮件列表上提问。

GraphX 目前处于 alpha 阶段,欢迎贡献代码。如果您想向 GraphX 提交更改,请阅读如何为 Spark 做出贡献并发送补丁给我们!

入门指南

开始使用 GraphX

  • 下载 Spark。GraphX 已作为一个模块包含在内。
  • 阅读 GraphX 指南,其中包含使用示例。
  • 如果您想在分布式模式下运行,请了解如何在集群上部署 Spark。您也可以无需任何配置,直接在多核机器上进行本地运行。