- 下载spark-2.1.1
提供两种方式下载hugespark:
直接下载具有hugespark功能的spark安装包,然后解压
下载源码,编译hugespark jar包,配置本机spark;
2.1 源码编译
下载spark-2.1.1,解压spark(),删除过期的guava.jar包
rm -rf jars/jackson-module-scala_2.11-2.6.5.jar
rm -rf jars/jackson-annotations-2.6.5.jar
rm -rf jars/jackson-module-paranamer-2.6.5.jar
rm -rf jars/jackson-databind-2.6.5.jar
rm -rf jars/jackson-core-2.6.5.jar
hugespark源码下载
$ git clone https://github.com/hugegraph/hugegraph-spark.git
使用Apache Maven构建,示例如下:
$ cd hugegraph-spark
$ mvn -DskipTests clean assembly:assembly
将编译完成的jar包拷贝到spark安装目录下
$ 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 :
./bin/spark-shell
导入hugegraph相关类
import com.baidu.hugegraph.spark._
初始化graph对象,并创建snapshot
val graph = sc.hugeGraph("test","${spark.hugegraph.conf.url}")
4.1 操作
数据导入成功后可以对graph进行相关操作,示例如下:
获取边的个数
获取边的个数
graph.edges.count()
出度top 100
val top100 = graph.outDegrees.top(100)
val top100HugeGraphID = sc.makeRDD(top100).join(graph.vertices).collect
top100HugeGraphID.map(e=> (e._2._2.vertexIdString,e._2._1)).foreach(println)
或使用隐式方法:
implicit val degreeTop = new Ordering[(Long,Int)]{
override def compare(a: (Long,Int), b: (Long,Int)) =a._2.compare(b._2)
}
PageRank
PageRank的结果仍为一个图,包含vertices
与 edges
。
获取 PageRank的top100的顶点 访问vertices的PageRank的过程中会隐式调用myOrd方法,每个vertices包含 (Long,Double)对,comapares方法中仅依据double值比较。
- 分区的个数需要小于20亿(1<< 31).