TigerGraph图形化界面GraphStudio简单操作

2023-11-15

创建图模型

图模型由若干节点类型(vertex type)和若干边类型(edge type)组成。可以指定边类型的源节点类型(source vertex type)和目标节点类型(target vertex type)。图模型是对现实世界的问题的一种直观的抽象。
我们很容易建立电影推荐问题的模型,模型中有两种节点类型:人(person)和电影(movie),以及一种边类型:打分(rate)。rate的源节点类型为person,目标节点类型为movie。
我们使用GUI集成开发工具GraphStudio创建图模型。打开浏览器,在地址栏输入安装TigerGraph机器的IP+14240端口访问GraphStudio,载入完成后点击左侧导航栏的Design Schema项进入创建图模型页面:
创建图模型(Design Schema)页面

单击下图中黄色箭头所指的工具栏中的按钮即可添加节点类型,在弹出的窗口中设置节点类型名称、主键(primary id)名称和类型、属性(attribute)名称和类型,并根据语义选择节点类型的颜色和图标。我们首先添加person节点类型:
在这里插入图片描述

然后添加movie节点类型:
在这里插入图片描述

添加完毕后可以通过鼠标拖动调整节点类型的位置:
在这里插入图片描述

单击下图第一步中黄色箭头所指的工具栏中的按钮进入添加边类型模式,然后如第二步点击源节点类型,然后如第三步点击目标节点类型。
在这里插入图片描述

在弹出的窗口中设置边类型名称、边类型的有向性(directed)、属性(attribute)名称和类型,并可以选择边类型的颜色。我们输入rate边类型的信息:
在这里插入图片描述

至此,我们完成了图模型的创建。可以用鼠标滚轮缩放图模型,也可以用鼠标按住工作面板的空白处拖动整个图模型。点击工具栏中的发布按钮将图模型发布到TigerGraph系统中。整个发布大概需要2分钟。
在这里插入图片描述

创建数据映射

数据映射(data mapping)指建立数据模型之间的元素的对应关系。在电影推荐的这个实例中,我们需要建立从csv文件代表的数据模型到图模型之间的对应关系。
这里需要弄清楚模型和元素之间的关系,这种关系类似于面向对象程序设计中类(class)与实例(instance)之间的关系。我们刚刚创建的图模型描述了这些类之间的关系,而我们接下来要向图中载入的数据(元素)则是具体的每一个人、每一部电影和每条某人对某电影的打分。
在由movies.csv文件和ratings.csv文件组成的模型中,文件表头的语义代表了该模型的结构。movies.csv文件除表头以外的每行数据代表了一个电影元素,我们需要将它映射到图模型中的电影元素。ratings.csv文件除表头以外的每行数据包含了一个(可能重复出现的)人元素和一个打分元素,我们需要将它映射到图模型的人元素和打分元素。
点击左侧导航栏的Map Data To Graph项进入创建数据映射页面:
在这里插入图片描述

我们需要将数据文件上传到TigerGraph后台。这里有两种方式:对于小于500MB的文件,可以直接通过GUI上传。点击下图中黄色箭头1所指的工具栏添加数据源按钮,在弹出的窗口中点击黄色箭头2所指的上传文件按钮,选择本机解压缩后的ml-20m数据集中的movies.csv文件上传。上传完成后在文件列表中会显示该文件:
在这里插入图片描述

然后我们将该数据源添加到工作面板上。在Files on server列表中点击movies.csv文件,GraphStudio后台用算法智能分析数据并推断出文件的分隔符(delimiter)、换行符(end of line)和是否有表头(has header)。GraphStudio的这个推断是尽力而为的,如果不准确,用户可以自由修改这些设置,文件会马上被重新分行分列。需要注意的是GraphStudio不对转义字符(escape character)做推断。回顾前文我们提到movies.csv对于title列数据有逗号的情况采用双引号转义,所以我们需要在转义字符下拉列表中选择双引号("):
在这里插入图片描述

点击添加之后,movies.csv作为一个数据源被添加到工作面板上,表示为一个文件图标。用户可以按住这个图标拖动到任何想要的位置:
在这里插入图片描述

下面我们添加ratings.csv文件。出于保护系统资源的考虑,GraphStudio限制通过GUI上传单个文件不能超过500MB,而ratings.csv刚好超过了这个限制,因此我们通过scp命令(或者任意其他方式)直接将该文件传到虚拟机的
/home/tigergraph/tigergraph/loadingData/
文件夹内(如果你在安装TigerGraph过程中没有使用默认的用户名或安装路径,则请将文件上传到相应的路径)。
再次点击工具栏添加数据源按钮,在弹出的窗口中选择ratings.csv文件添加到工作面板:
在这里插入图片描述

好了,我们已经添加了所需的数据源,接下来创建数据源到图模型之间的数据映射。
首先我们将movies.csv映射到movie节点类型。点击工具栏中的映射数据到图模型按钮,然后点击数据源(movies.csv)图标,然后点击目标节点类型(movie)。这时候一条数据映射关系就被创建了:
在这里插入图片描述

接下来,我们需要填充映射关系的内容,即数据源中的数据如何映射到目标节点(或边)的属性。在右侧工作面板中,表示数据源movies.csv的表和表示movie节点类型的表已经静静地等在那里了。建立映射的方式非常直观,先点击数据源表中的某一行(对应于csv文件中的某一列,这种旋转90度的表达方式是ETL中普遍采用的可视化方式),再点击节点类型属性表中的某一行(对应节点的主键或某个属性),就完成了一个属性映射。这里我们建立了三条属性映射,你可能注意到原来显示在左侧工作面板该数据映射上面的错误信息消失了,这是因为你创建了对于movie节点类型的主键的映射。对于节点来说,主键映射是必须的。而属性可以不被映射,在这种情况下当数据加载时这些未被映射的属性会使用默认值。
在这里插入图片描述

最后,我们建立ratings.csv到rate边类型的数据映射。重复与上面类似的操作,最终的映射结果为:
在这里插入图片描述

至此,我们完成了数据映射的创建。需要注意的是我们并没有映射从ratings.csv到person节点类型的映射,这是因为在ratings.csv映射到rate边类型的时候我们建立了userId列到rate边的源节点类型person的属性映射,这会在后续的数据加载中自动创建以ratings.csv中该列数据值为主键的person类型的节点。在TigerGraph系统中所有加载到相同类型的具有相同主键的节点会被合并为一个节点,默认的合并规则为属性覆盖。
最后,点击左上角的发布按钮将数据映射发布到TigerGraph系统。发布所需时间和数据映射的个数相关,这里大概需要6秒:
在这里插入图片描述

载入数据

接下来我们让TigerGraph系统根据我们创建的数据映射加载数据。点击左侧导航栏的Load Data项进入加载数据页面,点击工具栏中的开始加载按钮:
在这里插入图片描述

加载整个数据集耗时仅2分钟,这仅仅是在个人苹果笔记本的虚拟机上就能达到的加载速度!加载完毕后我们通过右侧的统计信息看到总共加载了16.5万个节点和4000万条边。之前我们说总共有2000万条打分记录,而每条记录在TigerGraph图数据库中被加载到一条rate边和一条reverse_rate反向边,因此总共有4000万条边。
在这里插入图片描述

浏览图数据

下面我们利用GraphStudio内置的一些图数据浏览功能直观的感受一下刚刚加载的数据。点击左侧导航栏的Explore Graph项进入浏览图数据页面:
在这里插入图片描述

首先我们点击拾取节点(Pick Vertices)按钮从图数据中拾取5个person节点和5个movie节点。这里的拾取不是随机的,因此每次拾取会返回相同的结果。如果你想要更多的节点,可以修改Enter a number中的数字。这里最大可以输入500。如果你知道节点的主键,可以在Enter vertex id输入框中输入主键的值,然后点击旁边的Search按钮拾取那个节点。配置(Configuration)可以控制拾取节点的类型范围,默认是从全部类型中拾取。你也可以勾选取消一些类型。
在这里插入图片描述

默认情况下所有节点显示的标签都是它们的主键。你可以修改设置显示其他属性,我们设置movie类型的节点显示它们的title属性:
在这里插入图片描述

完成修改之后,可以看到工作面板中的movie节点的标题被显示出来了,可视化变得更加直观。
在这里插入图片描述

切换到黑色的纵向导航栏第三个最短路径项。点击选择起始节点(Choose starting vertex)输入框,再随意点击工作面板中的一个节点。再点击选择目标节点(Choose destination vertex)输入框,再随意选择工作面板中的另一个节点。
在这里插入图片描述

点击查找路径(Find Paths)按钮,TigerGraph瞬间找到了两点之间的一条最短路径,长度为4。请尝试修改设置将打分显示在rate边的标签上~
在这里插入图片描述

你可以继续尝试浏览图数据页面的其他功能。相信你会通过一些操作发现这是一个非常密集的图(点与点之间有极多的连接路径)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TigerGraph图形化界面GraphStudio简单操作 的相关文章

  • 表示 DAG(有向无环图)

    我需要将依赖项存储在 DAG 中 我们正在非常细粒度地 制定新的学校课程 我们使用的是 Rails 3 注意事项 宽大于深 很大 我估计每个节点有 5 10 个链接 随着系统的增长 这个值将会增加 读多写少 most common are
  • 同时使用@Document和@Entity

    我尝试在同一个实体类上使用 Document和 Entity 但是当我实现两个存储库 ElasticSearchRepository和CrudRepository 时出现以下错误 The bean esRepo defined in nul
  • DynamoDB 如何同时支持 Key-Value 和 Document 数据库属性

    根据 DynamoDB 的文档 它支持 NoSQL 的键值和面向文档的属性 即使其他 NoSQL 数据库仅属于一种类型 键值 文档 图形或面向列 它还说 Amazon DynamoDB 基于 Dynamo 的原则构建 3 是 AWS 基础设
  • Cassandra 时间序列数据模型

    我正在研究用于存储时间序列的 Cassandra 数据模型 我是 Cassandra 新手 我有两个应用程序 日内股票数据和传感器数据 股票数据将以一分钟的时间分辨率保存 七个数据字段构建一个时间范围 符号 日期时间 开盘价 最高价 最低价
  • MongoDB、Redis 与 Cassandra 的快速写入、临时行存储解决方案

    我正在构建一个跟踪和验证广告展示次数和点击次数的系统 这意味着有很多插入命令 平均每秒约 90 个 峰值为 250 个 和一些读取操作 但重点是性能并使其速度极快 该系统目前使用 MongoDB 但从那时起我就开始使用 Cassandra
  • Delphi 和 NoSQL

    有人曾经将 Delphi 与 NoSQL 数据库 如 Mongo CouchDB 或其他数据库 一起使用过吗 您会推荐哪一款 对于 Mongo 有TMongoWire https github com stijnsanders TMongo
  • 在数据库中存储 JS 数组和对象

    我有一个应用程序 可以让用户用 JS 构建东西 我希望用户能够保存其工作的当前状态以重用或共享它 但他拥有的是存储在 JS 数组中的 JS 对象的集合 具有非常不同的属性 颜色 标签 x y 位置 大小等 SQL 对于该特定任务来说似乎很糟
  • Titan 顶点中心索引与 Neo4j 标签

    在接近这个问题时 我试图对这两种技术进行比较 我想知道你们中是否有人已经有处理其中任何一种或两种技术的经验 我主要对处理类似用例时的性能数字感兴趣 这两个概念之间的区别是全局索引和本地索引之间的区别 据我了解 Neo4j顶点标签允许您通过顶
  • 使用 RavenDB 的“传统”一对多查询

    我知道include RavenDB 的功能 它允许我在数据库的一次往返中立即获取引用的文档 但我的问题是 我首先获取的文档不包含对 其他 文档的引用 但 其他 文档引用了当前文档 想象一下我们在世界各地都有站点的设置 每个site可能会触
  • 在 MySQL 中使用 NoSQL

    我注意到 MySQL 可以将 Memcached NoSQL 与 InnoDB 结合使用 但我无法检索有关如何使用它的信息 我想与 PHP 一起使用 NoSQL 查询是标准的吗 首先 MySQL从5 6版本开始只支持NoSQL的memcac
  • MongoDB 架构设计 - 实时聊天

    我正在启动一个项目 我认为该项目特别适合 MongoDB 因为它提供的速度和可扩展性 我目前感兴趣的模块是与实时聊天有关的 如果我要在传统的 RDBMS 中执行此操作 我会将其分为 频道 一个频道有很多用户 用户 一个用户有一个频道但有多条
  • 使用 cassandra-cli 创建两个复合列

    我的列族需要两个复合列 关键数据类型是BytesType 以下是使用 CQL 的表定义 CREATE TABLE stats gid blob period int tid blob sum int uniques blob PRIMARY
  • 是否可以针对 noSQL DB 构建复杂的查询

    我一直在研究 noSQL DB 但未能为自己满意地回答这个问题 是否可以针对 noSQL DB 构建复杂的查询 我想知道的查询类型是这样的 select from DB where vara gt x AND varb 2 AND varc
  • 查询 mongodb 返回今天创建的文档

    我如何编写今天创建的结果文档的过滤器 我知道 ObjectId 有时间戳 我试过这个 db doc find id gte ObjectId getTimestamp getTime 我可以写吗 db doc find id getTime
  • dynamoDB 如何存储数据?

    由于Dynamodb以键值对的形式存储数据 其中键是主键的类型 值是与其关联的数据 我想知道dynamo db是否真正理解值 json 我所说的值是指json与键关联的对象 RDBMS 中的一行 dynamo db 是否理解有一些属性以及它
  • 使用 Django 会话存储登录用户

    我正在创建一个以 REST 为中心的应用程序 它将针对大多数特定于域的模型使用某种 NoSQL 数据存储 对于我打算围绕 REST 数据框架构建的主站点 我仍然希望对用户 计费信息和域数据模型范围之外的其他元数据使用传统的关系数据库 有人告
  • 带有版本控制的 json 数据存储

    问题定义 有一个Java服务器存储JSON可以映射到 Java 类的数据 Java 类可能会发生变化 目标是能够更新 Java 类并且仍然能够解码JSON旧版本的数据到新版本的 Java 对象 应该有一个良好的版本控制系统 例如 能够向 J
  • 即席查询/更新是否开始影响您使用 MongoDB 的工作效率?

    我开发一个 ASP MVC 网站已经快一年了 现在完全在 mongodb 上 我大部分时间都喜欢它 使用 C mongodb 驱动程序和 mongovue 等工具 开发效率非常高 然而 我已经开始达到这样一个地步 有些事情我真的希望我有一个
  • 在不知道对象键的情况下进行 Cosmos DB 查询

    单个文档示例 id xxxxxx properties a prop type names value John b prop type score value 5 5 c prop type names value Steve 问题 如何
  • 如何在图数据库(如 Neo4j)中对现实世界的关系进行建模?

    我有一个关于在图形数据库中建模的一般性问题 但我似乎无法解决这个问题 您如何建模这种类型的关系 牛顿发明了微积分 In a 简单图 http docs neo4j org chunked snapshot graphdb neo4j rel

随机推荐

  • 雪崩 计算机组成原理,计算机组成原理复习资料(学习课件整理版可自学使用).doc...

    一 本课程在计算机系统中的位置 一 课程目标 1 结构与原理掌握 建立计算机系统的整机概念 掌握计算机各部件的组成原理与技术 了解计算机系统组成与结构的新技术 2 分析与计算能力 掌握对组成与结构进行性能分析的方法 通过量化计算 加深对组成
  • 李沐动手学深度学习V2-目标检测SSD

    一 目标检测SSD 单发多框检测 1 介绍 SSD模型主要由基础网络组成 其后是几个多尺度特征块 基本网络用于从输入图像中提取特征 因此它可以使用深度卷积神经网络 单发多框检测论文中选用了在分类层之前截断的VGG 现在也常用ResNet替代
  • css中hover变大效果

    html代码 div img src img 11 jpg alt div css代码
  • 轻试Nginx的负载均衡

    看到网上的负载均衡 一直都没有怎么看过 也不理解 今天从网上学着点在windows下用Nginx来试试 我的os是windows xp 用的web服务器时IIS5 1 用了两台同在一个局域网的电脑 分别装有IIS 作为web服务器 地址为1
  • Linux如何查找杀死僵死进程

    最近工作过程中 发现好几台服务器出现僵死进程 如图 用下面的命令找出僵死进程 ps A o stat ppid pid cmd grep e Zz 命令注解 A 参数列出所有进程 o 自定义输出字段 我们设定显示字段为 stat 状态 pp
  • 数组随机排序的两种实现方法

    1 利用数组中的sort 方法 arr arr sort gt Math random 0 5 2 Fisher Yates Shuffle 复杂度为O n 从后向前遍历 不断将当前元素与随机位置的元素 除去已遍历的部分 进行交换 func
  • 海尔对话 Unity:作为数字转型的高阶形态,数字孪生发展前景不可逆

    来源 数字化企业 作为信息化发展到一定程度的必然结果 数字孪生正成为人类解构 描述和认识真实世界和虚拟世界的新型工具 从发展态势来看 数字孪生不仅是全新信息技术发展的新焦点 也是各国实现数字化转型的新抓手 还是众多工业企业业务布局的新方向
  • 第4章 微服务框架主体搭建

    mini商城第4章 微服务框架主体搭建 一 课题 框架搭建 二 回顾 1 整体业务功能分析 2 根据业务需求设计表结构及字段 三 目标 1 版本控制器的搭建使用 2 能独立自主的搭建微服务框架 3 学会考虑一些公共的工具组件 4 网关模块的
  • 树莓派初始使用相关问题及解决方法

    1 SSH连接 网线连接电脑 在无线图标上右键 打开 网络和internet设置 更改适配器设置 在WLAN上面右键 选择属性 共享 勾上 在cmd里面 可以输入 ping raspberrypi local 若显示不是ip 则ping 4
  • opencv3/C++ 机器学习-最邻近算法KNN识别字符

    如图 有如下字母表 现尝试采用最邻近算法KNN 取前10列字符作为训练数据 然后识别字母表中的字符 创建训练数据 首先通过获取前10列字符的轮廓外接矩形 将字符裁剪出作为训练样本建立图库 include
  • 【R语言】富集分析可视化代码(整理版)

    前面几期 干货预警 原来基因功能富集分析这么简单 R语言 基因GO KEGG功能富集结果可视化 保姆级教程 和 R语言 基因GO KEGG功能富集分析 超级简单的保姆级教程 分别介绍了如何使用DAVID在线分析工具对基因进行GO KEGG功
  • 谷歌开源项目Chromium的源码获取与项目构建(Win7+vs10/vs13)

    从12年那会儿开始获取源码和构建chromium项目都是按照那时候的官方要求用win7 vs2010 相对来说也比较简单 按照步骤来也很快能编译出来 1 官网的编译配置介绍 http www chromium org developers
  • uniapp实现抽奖功能

    效果 代码
  • Android AES加密算法工具类

    1 AES加密工具类 本篇文章使用PKCS5Padding加密方式 package com example aesdemo import java io UnsupportedEncodingException import javax c
  • 位(bit)与字节(byte)16进制值表现形式之间的转换

    小白近很长时间未更新 是因为换工作了 目前行业是涉及到硬件的的工作 今日因工作需要 学习到了位 bit 与字节 byte 16进制值表现形式之间的转换 故此记录一下 下面的内容为位 bit 与字节 byte 16进制值表现形式之间的快速计算
  • tensorflow.js 实现 官网mnist 代码时出现error Command failed with exit code 1且网页无法连接

    按官网的方法只需要四步就可以复现mnist https js tensorflow org tutorials mnist html git clone https github com tensorflow tfjs examples c
  • 一遍看懂面试算法——二叉树

    目录 二叉树的种类 满二叉树 完全二叉树 二叉搜索树 平衡二叉搜索树 二叉树的存储方式 二叉树的遍历方式 二叉树的递归遍历 二叉树的迭代遍历 前序遍历 迭代法 中序遍历 迭代法 后序遍历 迭代法 总结 二叉树的统一迭代法 二叉树层序遍历 以
  • 一文讲解thop库计算FLOPs问题

    问题 计算模型的FLOPs及参数大小 FLOPS是处理器性能的衡量指标 是 每秒所执行的浮点运算次数 的缩写 FLOPs是算法复杂度的衡量指标 是 浮点运算次数 的缩写 s代表的是复数 一般使用thop库来计算 GitHub https g
  • git pull 出错 remote: The project you were looking for could not be found.

    git pull 出错 git pull remote The project you were looking for could not be found fatal repository http 192 168 1 xx xx00
  • TigerGraph图形化界面GraphStudio简单操作

    创建图模型 图模型由若干节点类型 vertex type 和若干边类型 edge type 组成 可以指定边类型的源节点类型 source vertex type 和目标节点类型 target vertex type 图模型是对现实世界的问