【TigerGraph】图数据库实战入门 —— 数据导入
目录
1、数据集介绍
1.1 ml-20m解压之后如图
1.2 movie.csv
1.3 ratings.csv:
二、创建图模型
2.1 创建人(persion)节点
2.2 movie节点类型:
2.3 添加边
三、创建数据映射
3.1 添加movies.csv文件
3.2 添加 ratings.csv文件
3.3 添加映射关系
3.4 添加映射关系属性
四、载入数据
五、浏览图数据
请在这里下载并安装TigerGraph终身免费的开发者版本(Developer Edition):https://www.tigergraph.com/download/
我们使用MovieLens 20M数据集,该数据集相关工作请参见引用资料[1]。该数据集包含了138,000位用户针对27,000部电影的2000万条评分记录。数据集的下载地址为:https://grouplens.org/datasets/movielens/20m/
解压缩ml-20m.zip压缩包后,我们来熟悉一下该数据集的数据格式。
1、数据集介绍
1.1 ml-20m解压之后如图
1.2 movie.csv
该文件总共有27,279行,除第1行是表头外,每行用3列表示一部电影,分别为电影id(movieId)、电影名称(title)和电影类型(genres)。
需要注意的是该csv文件用逗号分隔不同的列,而为了处理电影名称中包含的逗号,使用双引号(")转义title列。
1.3 ratings.csv:
该文件总共有20,000,264行,除第1行是表头外,每行用4列表示一位用户对一部电影的评分,分别为用户id(userId)、电影id(movieId)、评分(rating)和评分时间(timestamp)。
这里的评分时间是用unix时间戳表示的。
在这个数据集中并没有提供用户的个人信息,可能是出于保护用户隐私的考虑。因此在后面的可视化展示中我们看到的用户数据都是被一个数字表示的。
二、创建图模型
图模型由若干节点类型(vertex type)和若干边类型(edge type)组成。可以指定边类型的源节点类型(source vertex type)和目标节点类型(target vertex type)。
图模型是对现实世界的问题的一种直观的抽象。
该电影推荐问题的模型:
节点:人(person)和电影(movie)
关系:打分(rate)
rate的源节点类型为person,目标节点类型为movie。
使用GUI集成开发工具GraphStudio创建图模型。打开浏览器,在地址栏输入安装TigerGraph机器的IP+14240端口访问GraphStudio,载入完成后点击左侧导航栏的Design Schema项进入创建图模型页面:
2.1 创建人(persion)节点
单击下图中黄色箭头所指的工具栏中的按钮即可添加节点类型,在弹出的窗口中设置节点类型名称、主键(primary id)名称和类型、属性(attribute)名称和类型,并根据语义选择节点类型的颜色和图标。
首先添加person节点类型
一个id属性
2.2 movie节点类型:
三个属性:id,title,genres
点击select icon 可以选择图标
点击色值,可以选择颜色
添加成功之后,可以看到如下
2.3 添加边
单击下图
第一步中黄色箭头所指的工具栏中的按钮进入添加边类型模式
第二步点击源节点类型
第三步点击目标节点类型
在弹出的窗口中设置边类型名称、边类型的有向性(directed)、属性(attribute)名称和类型,并可以选择边类型的颜色。我们输入rate边类型的信息:
至此,我们完成了图模型的创建。可以用鼠标滚轮缩放图模型,也可以用鼠标按住工作面板的空白处拖动整个图模型。
点击工具栏中的发布按钮将图模型发布到TigerGraph系统中。整个发布大概需要2分钟。
三、创建数据映射
数据映射(data mapping)指建立数据模型之间的元素的对应关系。在电影推荐的这个实例中,我们需要建立从csv文件代表的数据模型到图模型之间的对应关系。
这里需要弄清楚模型和元素之间的关系,这种关系类似于面向对象程序设计中类(class)与实例(instance)之间的关系。我们刚刚创建的图模型描述了这些类之间的关系,而我们接下来要向图中载入的数据(元素)则是具体的每一个人、每一部电影和每条某人对某电影的打分。
在由movies.csv文件和ratings.csv文件组成的模型中,文件表头的语义代表了该模型的结构。
movies.csv文件除表头以外的每行数据代表了一个电影元素,我们需要将它映射到图模型中的电影元素。
ratings.csv文件除表头以外的每行数据包含了一个(可能重复出现的)人元素和一个打分元素,我们需要将它映射到图模型的人元素和打分元素。
点击左侧导航栏的Map Data To Graph项进入创建数据映射页面:
3.1 添加movies.csv文件
需要将数据文件上传到TigerGraph后台。
有两种方式:1,直接上传:对于小于500MB的文件,可以直接通过GUI上传。
点击下图中黄色箭头1所指的工具栏添加数据源按钮,在弹出的窗口中点击黄色箭头2所指的上传文件按钮,选择本机解压缩后的ml-20m数据集中的movies.csv文件上传。
上传完成后在文件列表中会显示该文件:
然后将该数据源添加到工作面板上。
在Files on server列表中点击movies.csv文件,GraphStudio后台用算法智能分析数据并推断出文件的分隔符(delimiter)、换行符(end of line)和是否有表头(has header)。
需要在转义字符下拉列表中选择双引号("):
点击添加之后,movies.csv作为一个数据源被添加到工作面板上,表示为一个文件图标。用户可以按住这个图标拖动到任何想要的位置:
3.2 添加 ratings.csv文件
添加ratings.csv文件
再次点击工具栏添加数据源按钮,在弹出的窗口中选择ratings.csv文件添加到工作面板:
3.3 添加映射关系
将movies.csv映射到movie节点类型。点击工具栏中的映射数据到图模型按钮,然后点击数据源(movies.csv)图标,然后点击目标节点类型(movie)。这时候一条数据映射关系就被创建了:
3.4 添加映射关系属性
1,先点击数据源表中的某一行(对应于csv文件中的某一列,这种旋转90度的表达方式是ETL中普遍采用的可视化方式)
2,再点击节点类型属性表中的某一行(对应节点的主键或某个属性),就完成了一个属性映射。
这里建立了三条属性映射,你可能注意到原来显示在左侧工作面板该数据映射上面的错误信息消失了,这是因为你创建了对于movie节点类型的主键的映射。
对于节点来说,主键映射是必须的。而属性可以不被映射,在这种情况下当数据加载时这些未被映射的属性会使用默认值。
最后,建立ratings.csv到rate边类型的数据映射。重复与上面类似的操作,最终的映射结果为:
最后,点击左上角的发布按钮将数据映射发布到TigerGraph系统。发布所需时间和数据映射的个数相关,这里大概需要几秒:
四、载入数据
接下来让TigerGraph系统根据我们创建的数据映射加载数据。点击左侧导航栏的Load Data项进入加载数据页面,点击工具栏中的开始加载按钮:
加载完成之后,如图:
五、浏览图数据
下面利用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)输入框,再随意选择工作面板中的另一个节点。
就先到这里了,加油!
【TigerGraph】图数据库实战入门 —— 数据导入相关推荐
- pythonmysql数据分析_Python操作Mysql数据库入门——数据导入pandas(数据分析准备)...
原标题:Python操作Mysql数据库入门--数据导入pandas(数据分析准备) 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求 ...
- 欢迎来到图数据库的世界——《图数据库实战》中文版上架了!
叶伟民和我翻译的<图数据库实战>(Graph Databases In Action)中文版上架了,这本书将带你进入图数据库这个全新的世界. 当年译者叶伟民向美国移民局证明他是美国本土难以 ...
- TigerGraph图数据库创建一个图Schema
以开发版的TigerGraph图数据库为例. 若没有多图权限的话,若TigerGraph中已经有其他图数据,则会执行Drop ALL命令.以下是在gsql环境下执行. 第一步:创建Vertex 命令如 ...
- [转载]在SQL Server数据库之间进行数据导入导出,OPENDATASOURCE
需要在c盘下先建立一个data.txt文件,然后在文件的第一行写上你要导出的列,不如说要导出id和name这两列,就在第一行写上 id,name 然后保存,使用下列SQL就可以了,你如果要保持原有的I ...
- Sqoop(三)将关系型数据库中的数据导入到HDFS(包括hive,hbase中)
本文转自:https://www.cnblogs.com/yfb918/p/10855170.html 一.说明: 将关系型数据库中的数据导入到 HDFS(包括 Hive, HBase) 中,如果导入 ...
- Java实现Excel导入数据库,数据库中的数据导入到Excel
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 实现的功能: Java实现Excel导入数据库,如果存在就更新 数据库中的数据导入到Excel 1. ...
- 在SQL Server数据库之间进行数据导入导出
来源:http://kb.cnblogs.com/page/94464/ 在SQL Server数据库之间进行数据导入导出 (1).使用SELECT INTO导出数据 在SQL Server中使用最广 ...
- access数据库文件导入mysql数据库文件怎么打开,Access数据库从外部数据导入文本文件和VF数据库-dbf文件怎么打开...
亲爱的小伙伴们,我们又见面了! 上一期我们学习了Access数据库从外部数据导入Excel文件,下图学生成绩表2就是我们新导入的数据: 导入Excel文件 今天我们来学习如何从外部数据导入文本文件和V ...
- 教你两种数据库覆盖式数据导入方法
摘要:本文主要介绍如何在数据库中完成覆盖式数据导入的方法. 前言 众所周知,数据库中INSERT INTO语法是append方式的插入,而最近在处理一些客户数据导入场景时,经常遇到需要覆盖式导入的情况 ...
最新文章
- 开源大数据周刊-第44期
- linux下mysql开启远程访问权限及防火墙开放3306端口(mysql开放host访问权限)
- a5松下驱动器参数设置表_松下伺服几个参数需要熟悉并掌握设置方法
- 你是信用卡卡奴吗?怎么摆脱卡奴?
- python编写统计选票的程序_使用python编写微信公众号发稿统计程序
- python中functools_(转)Python——functools
- 洛谷——P1482 Cantor表(升级版)
- 站内搜索(ELK)之数据表字典类型字段的索引思路
- 测试类写法以及几种常用方式
- 国电集团:电子招投标每年节约成本10亿元
- 安装rtl8187时出现2.6.32-358.el6.i686/build错误
- 我的Qt作品(12)使用Qt+OpenCV实现一个带旋转角度的Shape形状匹配演示软件
- 8位可控加减法电路设计
- 【秀米教程5】点击动作
- 《达芬奇密码》读后感
- mysql percent_MySQL PERCENT_RANK 函数
- 华为机试—字符串首字母转换成大写
- Day6-2021.1.14 计算机网络面经从基础到总结+力扣 链表 题目的整理。
- 自动颁发证书 AD域策略
- collections.defaultdict