GraphFrames是Apache Spark上的图处理框架。 目前博主知道的三种方式是 2.使用SparkConf的spark.jars.packages属性指定依赖包: 3.者在SparkSession中配置:(Spark2.x版本) 博主使用的就是第一种,这里附上图例 下图是安装好之后的使用,没有显示下包的过程。 具体下包的过程图是这样的,嗯一共五个modules,其中scala-lang是需要较长时间的,请忽略本人的渣渣网速,诶 GraphFrame是GraphFrames API的核心抽象编程模型,是图的抽象。 图例如下: 代码片如下: 采用形如“(a)-[e]->(b)”的模式描述有向边 模式视图是DataFrame类型的,同样可以进一步进行查询、过滤和统计操作。 这里由于示例的图比较简单,所以过滤出来的效果跟find()的结果一样,可以尝试构建更复杂的有向图、无向图、二分图、多重图等尝试进行查询操作,更进一步的理解和掌握。 图可以以多种格式进行保存,例如: 博主演示的是保存在linux下的,注意图保存的是文件夹,如下图: 具体查看的效果是这样的,是不是比较简洁易读: 图加载可以理解为对图的顶点和边的持久化,可以随时调用和加载。 Spark-GraphX图计算入门示例到此尾声,如有纰漏,欢迎各位指出~Spark-GraphFrames入门使用示例
GraphFrames简介
GraphFrames库的优势
使用GraphFrames库
1.目前GraphFrames库还没有并入Spark项目中,使用该库时,要安装GraphFrames包:
$pyspark --packages graphframes:graphframes:0.5.0-spark2.1-s_2.11
from pyspark import SparkConf conf = SparkConf().set('spark.jars.packages' ,'graphframes:graphframes:0.5.0-spark2.1-s_2.11')
from pyspark.sql import SparkSession spark = SparkSession.builder.config('spark.jars.packages' ,'graphframes:graphframes:0.5.0-spark2.1-s_2.11') .getOrCreate()
使用图例
最后再温馨提示一下新手小白,第三种配置需要注意spark的版本,1.0的版本的话可能会出现报错现象,继续往下演示。创建GraphFrame实例
G∈<V,E>
>>> from graphframes import * >>> vertices = spark.createDataFrame([ ("a", "Alice", 34),("b", "Bob", 36)] , ["id", "name", "age"]) >>> edges = spark.createDataFrame([ ("a", "b", "friend")] , ["src", "dst", "relationship"]) >>> from graphframes import GraphFrame >>> graph = GraphFrame(vertices,edges)
这里习惯性的查看一下具体的方法名有哪些,有兴趣的童鞋最好研读一下文档或者案例
GraphFrames用户指南-Python — Databricks文档.视图和图操作
GraphFrame提供四种视图:返回类型都是DataFrame
graph.Vertices.show()
graph.edges.show()
graph.triplets.show()
对于的代码片如下:>> graph.vertices.show() +---+-----+---+ | id| name|age| +---+-----+---+ | a|Alice| 34| | b| Bob| 36| +---+-----+---+ #顶点表视图 >> graph.edges.show() +---+---+------------+ |src|dst|relationship| +---+---+------------+ | a| b| friend| +---+---+------------+ #边表视图 >> graph.triplets.show() +--------------+--------------+-----------+ | src| edge| dst| +--------------+--------------+-----------+ |[a, Alice, 34]|[a, b, friend]|[b, Bob, 36]| +--------------+--------------+-----------+ #三元组(Triplet)视图
通过GraphFrame提供的三个属性:degrees、inDegrees、 outDegrees可以获得顶点的度、入度和出度。
>>> graph.degrees.show() +---+------+ | id|degree| +---+------+ | b| 1| | a| 1| +---+------+ #degrees顶点的度 >> graph.inDegrees.show() +---+--------+ | id|inDegree| +---+--------+ | b| 1| +---+--------+ #inDegrees顶点的入度 >> graph.outDegrees.show() +---+---------+ | id|outDegree| +---+---------+ | a| 1| +---+---------+ #outDegrees顶点的出度
模式发现
>>> motifs = graph.find("(a)-[e]->(b)") >>> motifs.show()
>>> motifs.filter("b.age > 30").show()
加载和保存图
图保存
csv/json/parquet/text
想研究的童鞋可以看看write下的一些方法
>>> graph.vertices.write.parquet("hdfs://xdata-m1:8020/user/ua50/vertices") >>> graph.edges.write.parquet("hdfs://xdata-m1:8020/user/ua50/edges") #注意这个保存路径是hdfs的
graph.vertices.write.json("/home/hadoop/spark-graphX/vertices_json") >>>ls >>>part-00000-7a9d9acc-50a6-43ec-8b4b-3f29e8546a98-c000.json _SUCCESS
图加载
>>> v = spark.read.parquet("hdfs://xdata-m1:8020/user/ua50/vertices") >>> e = spark.read.parquet("hdfs://xdata-m1:8020/user/ua50/edges") >>> newGraph=GraphFrame(v, e)
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算