75.md 4.4 KB
Newer Older
W
wizardforcel 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122


# Gelly:Flink Graph API

> 译者:[flink.sojb.cn](https://flink.sojb.cn/)


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

## 使用Gelly

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

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

*   [**Java**](#tab_java_0)
*   [**Scala**](#tab_scala_0)



```
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-gelly_2.11</artifactId>
    <version>1.7-SNAPSHOT</version>
</dependency>
```





```
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-gelly-scala_2.11</artifactId>
    <version>1.7-SNAPSHOT</version>
</dependency>
```



请注意,Gelly不是二进制发行版的一部分。有关[](https://flink.sojb.cn/dev/linking.html) Gelly库打包到Flink用户程序的说明,请参阅[链接](https://flink.sojb.cn/dev/linking.html)

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

## 运行Gelly示例

Gelly库jar 在**opt**目录中的[Flink发行版](https://flink.apache.org/downloads.html "Apache Flink:下载")中提供(对于早于Flink 1.2的版本,这些可以从[Maven Central](http://search.maven.org/#search|ga|1|flink%20gelly)手动下载 )。要运行**Gelly**示例,必须将**flink-gelly**(对于Java)或**flink-gelly-scala**(对于Scala)jar复制到Flink的**lib**目录中。[](http://search.maven.org/#search|ga|1|flink%20gelly)



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



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



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



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



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



显示一百万个顶点图的[图表指标](https://flink.sojb.cn/library_methods.html#metric)



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



图形的大小由_--scale_和_--edge_factor_参数调整。该 [库生成](https://flink.sojb.cn/graph_generators.html#rmat-graph)提供了访问其他配置调整幂律偏移和随机噪声。

示例社交网络数据由[斯坦福网络分析项目提供](http://snap.stanford.edu/data/index.html)。在[COM-LJ](http://snap.stanford.edu/data/bigdata/communities/com-lj.ungraph.txt.gz)数据集是一个很好的入门尺寸。运行一些算法并在Flink的Web UI中监控作业进度:



```
wget -O - http://snap.stanford.edu/data/bigdata/communities/com-lj.ungraph.txt.gz | gunzip -c > com-lj.ungraph.txt

./bin/flink run -q examples/gelly/flink-gelly-examples_*.jar \
    --algorithm GraphMetrics --order undirected \
    --input CSV --type integer --simplify undirected --input_filename com-lj.ungraph.txt --input_field_delimiter /figure>\t' \
    --output print

./bin/flink run -q examples/gelly/flink-gelly-examples_*.jar \
    --algorithm ClusteringCoefficient --order undirected \
    --input CSV --type integer --simplify undirected --input_filename com-lj.ungraph.txt --input_field_delimiter /figure>\t' \
    --output hash

./bin/flink run -q examples/gelly/flink-gelly-examples_*.jar \
    --algorithm JaccardIndex \
    --input CSV --type integer --simplify undirected --input_filename com-lj.ungraph.txt --input_field_delimiter /figure>\t' \
    --output hash
```



请在用户[邮件列表](https://flink.apache.org/community.html#mailing-lists)[Flink Jira](https://issues.apache.org/jira/browse/FLINK)上提交函数请求和报告问题。我们欢迎有关新算法和函数以及[代码贡献的建议](https://flink.apache.org/contribute-code.html)