在使用 HugeGraph-Spark 前,需要依赖 HugeGraph Server 服务,下载和启动 Server 请参考 。另外,由于 HugeGraph-Spark 需要使用 Spark GraphX,所以还需要下载 spark,本文的示例使用的是 apache-spark-2.1.1。

    然后将 hugegraph-spark 的 jar 包拷贝到 spark 的 jars 目录下

      配置项

      可以通过 spark-default.properties 或者命令行修改相关配置:

      • spark.hugegraph.snapshot.dir: 首次加载 hugegraph 数据生成 RDD 时,会将数据序列化保存到 spark 能访问到的介质上,以便于下次直接从该位置读取数据生成 RDD。默认值为 file:///tmp/hugegraph-snapshot,还可以配置为 HDFS 的路径;
      • spark.hugegraph.name: 要访问的图的名字;
      • spark.hugegraph.server.url: HugeGraphServer 的地址,默认值为
      • spark.hugegraph.read.timeout: HugeClient 从 HugeGraphServer 获取数据的超时时间,单位为秒,默认值为 120;
      • spark.hugegraph.split.size: 从 HugeGraphServer 中获取顶点和边时数据分片的大小,以字节为单位,默认值为 16M;
      • spark.hugegraph.shard.page.size: 获取分片数据时,每个分页的大小,默认值为 500 条。

      配置入口

      HugeGraph-Spark 提供了两种添加配置项的方法:

      1. 修改 conf/spark-defaults.conf

        首次安装的用户需要将 spark-defaults.conf.default 文件拷贝一份,如下:

        1. cp conf/spark-defaults.conf.default conf/spark-defaults.conf

        按需设置即可。

      4.1 生成 GraphX Graph RDD

      启动 scala shell

      导入 hugegraph 相关类

      1. scala> import com.baidu.hugegraph.spark._

      初始化 graph 对象(GraphX RDD),并创建 snapshot

      1. scala> val graph = sc.hugeGraph("hugegraph", "http://localhost:8080")
      2. org.apache.spark.graphx.Graph[com.baidu.hugegraph.spark.structure.HugeSparkVertex,com.baidu.hugegraph.spark.structure.HugeSparkEdge] = org.apache.spark.graphx.impl.GraphImpl@1418a1bd

      如果已经配置过spark.hugegraph.server.url参数,可以省略第二个参数,直接通过val graph = sc.hugeGraph("hugegraph")调用即可。

      这一步通常很快,因为只是获取了 HugeGraph 数据的分片信息,还没有真正的去执行 action 操作。

      4.2 使用 GraphX 进行图分析

      数据导入成功后可以对 graph 进行相关操作,示例如下:

      注意:第一次执行这一步可能会很耗时,因为这里才真正的读数据并保存。

      获取边个数

      出度 top 10

      1. val top10 = graph.outDegrees.top(10)
      2. sc.makeRDD(top10).join(graph.vertices).collect().foreach(println)

      PageRank

      PageRank的结果仍为一个图,包含verticesedges

        获取 PageRank 的 top 10 的顶点。

        1. val top10 = ranks.vertices.top(10)

        更多 GraphX 的 API 请参考 。