由Databricks、UC Berkeley以及MIT联合为Apache Spark开发了一款图像处理类库,名为:GraphFrames,该类库是构建在DataFrame之上,它既能利用DataFrame良好的扩展性和强大的性能,同时也为Scala、Java和Python提供了统一的图处理API。

什么是GraphFrames

与Apache Spark的GraphX类似,GraphFrames支持多种图处理功能,但得益于DataFrame因此GraphFrames与GraphX库相它有着下面几方面的优势:

1、统一的 API: 为Python、Java和Scala三种语言提供了统一的接口,这是Python和Java首次能够使用GraphX的全部算法。

2、强大的查询功能:GraphFrames使得用户可以构建与Spark SQL以及DataFrame类似的查询语句。

3、图的存储和读取:GraphFrames与DataFrame的数据源完全兼容,支持以Parquet、JSON以及CSV等格式完成图的存储或读取。

在GraphFrames中图的顶点(Vertex)和边(edge)都是以DataFrame形式存储的,所以一个图的所有信息都能够完整保存。

社交网络实例

比如说我们现在有一个社交关系图,每一名用户也就是顶点由他们之间的关系所连接,比如下面的这个例子:

针对这种社交关系图我们可能会有“谁最有影响力”或“应不应该介绍甲乙之间认识”等问题,这类问题可以用图查询算法来解决。这里每一名用户有姓名和年龄两种属性,用户之间的关系也有不同的类型。

简单查询

使用GraphFrames来进行查询非常容易。由于顶点和边都是以DataFrame存储,很多简单一些的查询语句直接就是DataFrame/SQL语句。

问:图中年龄超过35的用户总数是多少? g.vertices.filter(“age>35”)

问:有两名以上关注者的用户总数是多少? g.inDegrees.filter(“inDegree>=2”)

复杂查询

GraphFrames兼容GraphX中所有的算法因此对于复杂查询也能够很好地支持。比如我们想找出图中最重要的用户就可以用pageRank函数: results = g.pageRank(resetProbability=0.15, maxIter=10)

display(results.vertices)

GraphFrames还加入了广度优先搜索BFS和模式发现Motif finding两种新算法。

再举一个例子,比如我们想给用户推荐关注 的人就可以寻找图中满足下面这个条件的ABC三个用户:A关注B,B关注C但A并未关注C。代码如下: # Motif: A->B->C but not A->C

results = g.find("(A)-[]->(B); (B)-[]->(C); !(A)-[]->(C)")

# Filter out loops (with DataFrame operation)

results = results.filter("A.id != C.id")

# Select recommendations for A to follow C

results = results.select("A", "C")

display(results)

其他GraphFrames支持的算法还有:排序、最短路径、连通分量、强连通分量、三角计数和标签传播LPA。

GraphFrames与GraphX的集成

GraphFrames可以实现与GraphX的完美集成。两者之间相互转换时不会丢失任何数据。 val gx: Graph[Row, Row] = g.toGraphX()

val g2: GraphFrame = GraphFrame.fromGraphX(gx)

欲了解更多GraphFrames和GraphX之间的转换请参阅GraphFrames API文档。

小结

DataFrames针对图所做出的优化还远未完成,我们在下一版本中还会加入更多的功能。

python frame框架加图片_GraphFrames介绍:构建在DataFrame之上的图处理库相关推荐

  1. Python自动化测试框架【Allure-pytest功能特性介绍】

    Python自动化测试框架[Allure-pytest功能特性介绍] 目录:导读 前言 生成报告 测试代码 目录结构 Allure特性 Environment Categories Fixtures ...

  2. liunx+python+django框架实现图片生成二维码

    点击箭头处"蓝色字",免费领测试技术及面试资料! 余生皆欢喜 liunx+python+django框架实现二维码生成器 首先我简单的介绍下django:django官网解释就是如 ...

  3. python frame框架_Python_tkinter_Frame 框架

    Frame 框架 thinter.Menu(用于存放的父组件,属性参数...) 具有以下属性 background(bg)          正常的背景颜色显示在标签和指示器后面. borderwid ...

  4. python给pdf加图片签名_Python生成个性签名图片获取GUI过程解析

    这篇文章主要介绍了Python生成个性签名图片获取GUI过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 先来看看程序运行的样子: 所以,程序 ...

  5. 六.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---4.laserMapping.cpp--后端建图和帧位姿精估计(优化)

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  6. python frame框架抓取_Python抓取框架Scrapy爬虫入门:页面提取

    前言 Scrapy是一个非常好的抓取框架,它不仅提供了一些开箱可用的基础组建,还能够根据自己的需求,进行强大的自定义.本文主要给大家介绍了关于Python抓取框架Scrapy之页面提取的相关内容,分享 ...

  7. Python scrapy框架(01):scrapy介绍 初识scrapy

    前言: 最近在整理资料,顺便把部分干货写出来供学习以交流 一.scrapy的介绍 (1)何为框架?如何学习框架 框架就是一个集成了很多功能的一个通用性比较高的模板: 学习框架就学习框架中封装好的各种功 ...

  8. 使用python flask框架开发图片上传接口 详细案例

    python版本:3.6+ 需要模块:flask,pillow 需求:开发一个支持多格式图片上传的接口,并且将图片压缩,支持在线预览图片. 目录结构: app.py编辑内容: from flask i ...

  9. html给网页加图片背景颜色,0035 如何设置网页背景图和在网页中插入图片

    上节课讲了关于表格的一些更多知识和用表格配合div来进行网页排版. 这节课开始讲关于网页图片的相关知识. 上节课的课后练习 1.去网上搜索2个自己喜欢的图片,1个图片用来作为整个网页的背景,另一个图片 ...

最新文章

  1. 基于Java语言构建区块链(一)—— 基本原型
  2. 前端学python有什么用-原来 Python 还有这些实用的功能和特点!
  3. OPK修改操作系统信息 --oobe.xml
  4. 计算机软硬件作品构思报告,计算机方面的实训报告
  5. 【存储知识学习】第三章磁盘原理与技术3.1磁盘结构--《大话存储》阅读笔记
  6. Mac Go 国内加速镜像
  7. Linux基本命令(1)管理文件和目录的命令
  8. 使用 WebBrowser 操作 js
  9. 获得磁盘的飞鸽传书描述信息
  10. es搜索准实时的理解
  11. 我们为什么要使用NodeJS
  12. PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法
  13. 【系列二之图像处理系列】波形处理(3)
  14. 利用Python进行博客图片压缩
  15. C/C++ 字符数字-‘0‘ 字符数字+‘0‘ 是什么意思
  16. FPGA芯片供电总结
  17. Android获取设备号SSAID (Android ID) 和 IMEI
  18. java中decrement,Java LongAdder decrement()用法及代码示例
  19. 【小程序源码】云开发表情包制作神器微信小程序源码下载,支持各种自定义
  20. 职业规划-自动化测试

热门文章

  1. C# WinForm中四种显示信息的方式
  2. 买手机的注意事项(不断补充)
  3. 面试题,sql经典问题,老师、学生、课程、分数
  4. socketio跨域问题解决
  5. 痛心!商汤科技员工健身房猝死!网友:996福报何时是个头?
  6. 【youcans 的 OpenCV 例程200篇】172.SLIC 超像素区域分割算法比较
  7. css如何在html中链接代码,怎么在html中链接css文件?怎么链接css文件教程源码!...
  8. python代码分享(代码:多功能整合件【有摩根密码】/西普大陆/超级对战/宝藏)(1)
  9. Linux v4l2 二 驱动和 usb 摄像头
  10. 好用的谷歌插件以及软件,提升你的工作效率,做一名合格的打工人