**摘要:**本文主要介绍基于交互式查询所用的数据生成器(下文简称Datagen),及LDBC SNB数据如何在华为图引擎服务GES中应用。
本文分享自华为云社区《【图数据库性能和场景测试利器LDBC SNB】系列一:数据生成器简介 & 应用于GES服务》,作者:闹闹与球球
本文的主要内容包括:基于交互式查询所用的数据生成器(下文简称Datagen)介绍,及LDBC SNB数据如何在华为图引擎服务GES中应用。LDBC SNB所预设的节点和关系、数据生成器和系统的测试用例,形成了一个逻辑自恰的数据“武林”,以ldbc snb为测试标准的图数据库产品,就像是行走于其中的侠客们,都得遵循同一套“武林规矩”(测试用例),究竟谁能击败各方高手,问鼎盟主呢?
LDBC SNB,全称The Linked Data Benchmark Council’s Social Network Benchmark,官网地址:http://ldbcouncil.org。LDBC是一个致力于发展图数据管理的产业联盟组织,它开发了一套标准的benchmarks,用于系统地衡量不同图数据库产品的功能和性能。SNB是基于社交网络场景开发的一组benchmarks,由交互式场景(Interactive workload)和商业智能场景(Business Intelligence workload)组成。
LDBC SNB 项目包括3个组件:数据生成器(Datagen)、测试驱动程序(Test Driver,用于执行Benchmark的测试)和测试用例实现(Reference Implementation,目前提供了基于Cypher(Neo4j)和SQL(PostgreSQL)两种查询语言的测试用例实现)
LDBC SNB有两种工作模式:
1、交互式查询(Interactive workload),适用于事务性的在线查询场景,比如基础的增删改查、shortestpath、多跳等;
2、商业智能 (Business Intelligence workload),适用于根据企业业务场景制定的复杂查询和大规模离线图分析等场景。
在不同的工作模式下,【Datagen】、【Test Driver】 和【测试用例实现】都是不同的。
一、Datagen介绍
二、LDBC SNB在GES中的应用
Datagen支持的属性datatype如下, 每种属性都支持单值和列表两种模式。
(截图来源于官方文档http://ldbcouncil.org/ldbc_snb_docs/ldbc-snb-specification.pdf)
(截图来源于官方文档http://ldbcouncil.org/ldbc_snb_docs/ldbc-snb-specification.pdf)
如图所示,Datagen生成的数据有预设的一套图模型,包括:
8种节点:organization & place & tag & tagClass & person & forum & post & comment
15种关系,如下表:
这些预设的节点和关系,形成了一个逻辑自恰的数据“武林”,以ldbc snb为测试标准的图数据库产品,就像是行走于其中的侠客们,都得遵循同一套“武林规矩”(测试用例),究竟谁能击败各方高手,问鼎盟主呢?且拭目以待吧。
在Interactive Workload模式下,Datagen的底座为hadoop;在BI Workload模式下,底座为Spark。
本次调研主要使用基于伪分布式hadoop的Datagen。
GitHub - ldbc/ldbc_snb_datagen_hadoop: The Hadoop-based variant of the SNB Datagen
cd ldbc_snb_datagen_hadoop/
cp params-csv-composite.ini params.ini
wget http://archive.apache.org/dist/hadoop/core/hadoop-3.2.1/hadoop-3.2.1.tar.gz
tar xf hadoop-3.2.1.tar.gz
export HADOOP_CLIENT_OPTS="-Xmx2G"
# set this to the Hadoop 3.2.1 directory
export HADOOP_HOME=`pwd`/hadoop-3.2.1
./run.sh
解决方案:
从windows环境下载https://simulation.tudelft.nl/maven/dsol/dsol-xml/1.6.9/
手动安装缺失的jar包到本地的maven仓库
mvn install:install-file -Dfile=dsol-xml-1.6.9.jar -DgroupId=dsol -DartifactId=dsol-xml -Dversion=1.6.9 -Dpackaging=jar
sh run.sh
生成的数据文件存储在${outputDir}/social_network。
(以下参数介绍均省略了前缀“ldbc.snb.datagen.”,即参数的完整格式为“ldbc.snb.datagen.xxx”)
LDBC SNB支持生成不同规模的图数据集,generator.scaleFactor参数各取值对应的点边数目如下表:
(截图来源于官方文档http://ldbcouncil.org/ldbc_snb_docs/ldbc-snb-specification.pdf)
Datagen主要有4种Csv文件的序列化模式,所生成的数据格式各有不同。
基础序列化模式,每种节点、节点和节点之间的关系都有独立的csv文件,如图一所示:
图一 每种节点、节点和节点之间的关系都有独立的csv文件,其中person_xx.csv均为person节点的属性数据。
若某个属性有多个取值,例如person的email属性有多个值,则将person的email记录单独生成一个csv文件,并将多个email分成多行记录展示,如图二所示:
图二 person的email属性单独存储,并在多个email分成多条记录展示
在CsvBasic的基础上,将有多个值的属性和其他属性合并为一个记录,如图三;并将多个值进行合并(以list的格式,分号分隔),如图四;
图三 person节点的属性记录合并为person_0_0.csv
图四 language和email两个list属性合并在一行
在CsvBasic基础上,如果节点间关系是1对多的,则将关系作为外键合并入节点的属性文件中展示,如图五
图五 将comment-hasCreator->person、comment-isLocatedIn->place、comment-replyOf->post、comment-replyOf->comment关系与comment属性文件合并
是CsvComposite和 CsvMergeForeign的结合,既合并了list属性,又将一对多关系进行了压缩表示,如图六
图六 place列表示person-isLocatedIn->place关系的外键表示,同时language和email以list形式展示
CsvBasic
CsvComposite
CsvMergeForeign
CsvCompositeMergeForeign
Datagen生成的数据集与GES格式有以下3点区别
使用DatagenToGES数据转换脚本(基于CsvComposite序列化模式)可以将LDBC数,需在python3.6环境下运行。
DatagenTOGES脚本有如下功能:
转换前文件格式(CsvComposite序列化模式):
转换后文件格式:
DatagenToGES转换规模因子为100的大规模数据集用时约半个小时。
数据转换脚本核心代码片段:
在GES中导入转换后的LDBC SNB(示例数据为SF0.1),并执行PageRank算法,效果如下图:
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://huaweicloud.blog.csdn.net/article/details/125480025
内容来源于网络,如有侵权,请联系作者删除!