参考环境
Linux version 4.10.0-19-generic
Ubuntu 17.04
安装
首次安装,在项目根目录(解压之后的文件夹路径)下运行以下代码:
./gradlew clean build installDist
之后对项目文件更新之后再次安装,在项目根目录下运行以下代码:
./gradlew build installDist
在安装后初始化环境,在项目根目录下运行以下代码:
. ./env.sh
或者运行:
export GRAPHFLOW_HOME=`pwd`
运行
产生数据集
Graphflow Optimizers 通过python代码生成数据集和执行查询
对应的python代码放在项目根目录下的script文件夹下
从一张图生成数据集
图的点信息存放在一个vertices.csv(excel表格)文件中,每一行的格式为(id,label),id为0~N的整数表示的点的标号,label为点的标记
图的边信息存放在一个edges.csv(excel表格)文件中,每一行的格式为(from,to,label),from、to为0~N的整数表示的起点和终点的标号,label为边的标记
只从edges.csv生成数据集,这种情况下所有点的标记相同,在script文件夹下执行如下代码:
python3 serialize_dataset.py /absolute/path/edges.csv /absolute/path/data
/absolute/path/data 是生成的数据集的存放路径
从vertices.csv和edges.csv生成数据集,在script文件夹下执行如下代码:
python3 serialize_dataset.py /absolute/path/edges.csv /absolute/path/data -v /absolute/path/vertices.csv
执行完上面的命令后,在script文件夹下执行如下代码生成目录:
python3 serialize_catalog.py /absolute/path/data
执行查询
执行查询(无标记),在script文件夹下运行如下代码:
python3 execute_query.py "(a)->(b),(b)->(c),(c)->(d)" /absolute/path/data
如果需要使用多线程,可以在命令后面加 -t number:
python3 execute_query.py "(a)->(b),(b)->(c),(c)->(d)" /absolute/path/data -t 2
制定点与边的标记进行查询,在script文件夹下运行如下代码:
python3 execute_query.py "(a:person)-[friendof]->(b:person), (b:person)-[likes]->(c:movie)" /absolute/path/data
可能的问题及解决方法
问题1:运行时出现环境变量 GRAPHFLOW_HOME 未定义或者错误定义
back (most recent call last):
File "execute_query.py", line 9, in <module>
bin_home = os.environ['GRAPHFLOW_HOME'] + '/build/install/graphflow/bin/'
File "/usr/lib/python3.5/os.py", line 725, in __getitem__
raise KeyError(key) from None
KeyError: 'GRAPHFLOW_HOME'
解决方法:正确定义环境变量 GRAPHFLOW_HOME 为项目路径
export GRAPHFLOW_HOME=path/graphflow_optimizers
问题2:运行时出现环境变量 JAVA_HOME 未定定义
ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
解决方法:正确定义 JAVA_HOME 为jdk存放路径
export JAVA_HOME=path/jdk1.8.0_212