• 下载spark-2.1.1

    提供两种方式下载hugespark:

    • 直接下载具有hugespark功能的spark安装包,然后解压

    • 下载源码,编译hugespark jar包,配置本机spark;

    2.1 源码编译

    下载spark-2.1.1,解压spark(),删除过期的guava.jar包

    1. rm -rf jars/jackson-module-scala_2.11-2.6.5.jar
    2. rm -rf jars/jackson-annotations-2.6.5.jar
    3. rm -rf jars/jackson-module-paranamer-2.6.5.jar
    4. rm -rf jars/jackson-databind-2.6.5.jar
    5. rm -rf jars/jackson-core-2.6.5.jar

    hugespark源码下载

    1. $ git clone https://github.com/hugegraph/hugegraph-spark.git

    使用Apache Maven构建,示例如下:

    1. $ cd hugegraph-spark
    2. $ mvn -DskipTests clean assembly:assembly

    将编译完成的jar包拷贝到spark安装目录下

    1. $ cp baidu/xbu-data/hugegraph-spark/target/hugegraph-spark-0.1.0-SNAPSHOT-jar-with-dependencies.jar ${spark-dir}/spark-2.1.1/jars/

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

    提供两种添加配置项的方法:

    • 在conf/spark-defaults.conf中修改

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

      然后将上表中的配置项按照示例添加即可。

    • 命令行修改配置示例:

      启动Scala shell :

      1. ./bin/spark-shell

      导入hugegraph相关类

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

      初始化graph对象,并创建snapshot

      1. val graph = sc.hugeGraph("test","${spark.hugegraph.conf.url}")

      4.1 操作

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

      获取边的个数

      获取边的个数

      1. graph.edges.count()

      出度top 100

      1. val top100 = graph.outDegrees.top(100)
      2. val top100HugeGraphID = sc.makeRDD(top100).join(graph.vertices).collect
      3. top100HugeGraphID.map(e=> (e._2._2.vertexIdString,e._2._1)).foreach(println)

      或使用隐式方法:

      1. implicit val degreeTop = new Ordering[(Long,Int)]{
      2. override def compare(a: (Long,Int), b: (Long,Int)) =a._2.compare(b._2)
      3. }

      PageRank

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

      获取 PageRank的top100的顶点 访问vertices的PageRank的过程中会隐式调用myOrd方法,每个vertices包含 (Long,Double)对,comapares方法中仅依据double值比较。

      • 分区的个数需要小于20亿(1<< 31).