Gelly:Flink Graph API

译者:flink.sojb.cn

Gelly是Flink的Graph API。它包含一组方法和实用程序,旨在简化Flink中图形分析应用程序的开发。在Gelly中,可以使用与批处理API提供的类似的高级函数来转换和修改图形。Gelly提供了创建,转换和修改图形的方法,以及图形算法库。

使用Gelly

冻膜是目前的部分 Maven项目。所有相关的类都位于org.apache.flink.graph包中。

将以下依赖项添加到您pom.xml使用Gelly。

  1. <dependency>
  2. <groupId>org.apache.flink</groupId>
  3. <artifactId>flink-gelly_2.11</artifactId>
  4. <version>1.7-SNAPSHOT</version>
  5. </dependency>
  1. <dependency>
  2. <groupId>org.apache.flink</groupId>
  3. <artifactId>flink-gelly-scala_2.11</artifactId>
  4. <version>1.7-SNAPSHOT</version>
  5. </dependency>

请注意,Gelly不是二进制发行版的一部分。有关 Gelly库打包到Flink用户程序的说明,请参阅链接

其余部分提供了可用方法的说明,并提供了如何使用Gelly以及如何将其与Flink DataSet API混合的几个示例。

运行Gelly示例

Gelly库jar 在opt目录中的Flink发行版中提供(对于早于Flink 1.2的版本,这些可以从Maven Central手动下载 )。要运行Gelly示例,必须将flink-gelly(对于Java)或flink-gelly-scala(对于Scala)jar复制到Flink的lib目录中。

  1. cp opt/flink-gelly_*.jar lib/
  2. cp opt/flink-gelly-scala_*.jar lib/

Gelly的示例jar包含每个库方法的驱动程序,并在示例目录中提供。配置并启动集群后,列出可用的算法类:

  1. ./bin/start-cluster.sh
  2. ./bin/flink run examples/gelly/flink-gelly-examples_*.jar

Gelly驱动程序可以生成图形数据或从CSV文件读取边缘列表(群集中的每个节点都必须能够访问输入文件)。选择算法时,将显示算法描述,可用输入和输出以及配置。JaccardIndex打印用法:

  1. ./bin/flink run examples/gelly/flink-gelly-examples_*.jar --algorithm JaccardIndex

显示一百万个顶点图的图表指标

  1. ./bin/flink run examples/gelly/flink-gelly-examples_*.jar \
  2. --algorithm GraphMetrics --order directed \
  3. --input RMatGraph --type integer --scale 20 --simplify directed \
  4. --output print

图形的大小由—scale—edge_factor参数调整。该 库生成提供了访问其他配置调整幂律偏移和随机噪声。

示例社交网络数据由斯坦福网络分析项目提供。在COM-LJ数据集是一个很好的入门尺寸。运行一些算法并在Flink的Web UI中监控作业进度:

  1. wget -O - http://snap.stanford.edu/data/bigdata/communities/com-lj.ungraph.txt.gz | gunzip -c > com-lj.ungraph.txt
  2. ./bin/flink run -q examples/gelly/flink-gelly-examples_*.jar \
  3. --algorithm GraphMetrics --order undirected \
  4. --input CSV --type integer --simplify undirected --input_filename com-lj.ungraph.txt --input_field_delimiter /figure>\t' \
  5. --output print
  6. ./bin/flink run -q examples/gelly/flink-gelly-examples_*.jar \
  7. --algorithm ClusteringCoefficient --order undirected \
  8. --input CSV --type integer --simplify undirected --input_filename com-lj.ungraph.txt --input_field_delimiter /figure>\t' \
  9. --output hash
  10. ./bin/flink run -q examples/gelly/flink-gelly-examples_*.jar \
  11. --algorithm JaccardIndex \
  12. --input CSV --type integer --simplify undirected --input_filename com-lj.ungraph.txt --input_field_delimiter /figure>\t' \
  13. --output hash

请在用户邮件列表Flink Jira上提交函数请求和报告问题。我们欢迎有关新算法和函数以及代码贡献的建议