快速上手标准化图存储文件格式 GraphAr

本文介绍图存储文件格式GraphAr,它提供C++ SDK,用于生成、访问和转换图数据。GraphAr定义了图的元信息文件,并支持通过SDK读取、写入和实现PageRank等图算法。目前,GraphAr已在Github开源。
摘要由CSDN通过智能技术生成

之前的文章中,我们介绍了标准化图存储文件格式 GraphAr 的设计思路、项目概况和应用场景。在本文中,我们将结合具体的例子,介绍如何使用其提供的 C++ SDK 快速上手 GraphAr。目前,GraphAr 已在 Github 开源,欢迎大家关注、贡献代码和加星星✨~开源地址:https://github.com/alibaba/GraphAr

什么是 GraphAr?

GraphAr(Graph Archive,简称 GAR)为图数据定义了一套标准化的、独立于计算/存储系统的文件格式,并提供了一系列接口用来生成、访问和转换这些格式化的文件。GraphAr 可以帮助各类图计算应用或现有系统方便快捷地构建和访问图数据,它既可以作为图计算应用的直接数据源,也可以服务于图数据的导入/导出和持久化存储,减少各类图系统之间协同工作的开销。下图展示了将 GraphAr 作为图数据归档格式应用在典型业务的场景:借助 GraphAr,用户可以选择需要的点和边数据快速组建一张图,用于后续处理如 GraphScope 图分析任务。

安装 GraphAr 的 C++ SDK 需要以下依赖:

  • 支持 C++17 标准的编译器 (g++ >= 7.1 或 clang++ >= 5)
  • CMake (>=3.5)
  • make build utilities
  • curl-devel (Linux) 或 curl (macOS)

在本地搭建环境,从 GraphAr 源码编译安装 C++ SDK 可参考如下步骤:

# 下载最新版本代码
$ git clone https://github.com/alibaba/GraphAr.git

# 更新 submodule
$ git submodule update --init

# 编译
$ cd GraphAr/cpp
$ mkdir build-release
$ cd build-release
$ cmake ..
$ make -j$(nproc)

# Install GraphAr C++ SDK
$ sudo make install

更详细的编译安装步骤请查阅 GraphAr 官方文档

定义 GraphAr 元信息文件

GraphAr 将图的元信息和数据分别存储在不同的文件中。其中,元信息用一组 yaml 文件来描述:每个图实例对应一个图信息文件,图中每种类型的点/边对应一个点/边信息文件。这些 yaml 文件中定义了有关图数据存储在 GraphAr 中所需的全部必要信息。

以一个简单的名为 “ldbc_sample” 的图为例,由于它包含一种类型的点(person)和一种类型的边(person knows person),因此我们可以通过定义如下三个 yaml 文件来描述这张图的元信息。

ldbc_sample.graph.yml

name: ldbc_sample
vertices:
  - person.vertex.yml
edges:
  - person_knows_person.edge.yml
version: gar/v1

person.vertex.yml

label: person
chunk_size: 100
prefix: vertex/person/
property_groups:
  - properties:
      - name: id
        data_type: int64
        is_primary: true
    file_type: parquet
  - properties:
      - name: firstName
        data_type: string
        is_primary: false
      - name: lastName
        data_type: string
        is_primary: false
      - name: gender
        data_type: string
        is_primary: false
    file_type: parquet
version: gar/v1

person_knows_person.edge.yml

src_label: person
edge_label: knows
dst_label: person
chunk_size: 1024
src_chunk_size: 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值