数据加载

数据预览

为了方便演示练习,本次案例所使用的数据,经过了如下前处理:

  1. 手机号,IP地址,IP网段,做了id 化脱敏。

  2. IMEI 做了 MD5 脱敏。

  3. 时间做了顺序脱敏,整数数值表示从第一笔数据开始,经过的秒数,日期为从第一笔数据开始,经过的天数。因此时间、日期字段,不会影响先后关系与距离关系。

  4. 将原始数据中的邀请表兑换表,直接按照后续需要创建的边关系,拆分成了以下5个 jsonline 文件。

{"phone":140,"imei":"b7ae8af4afd439a101911cb51b17a123"}
{"phone":141,"imei":"ac8384f232cad1fb00ea98002dd575de"}
{"phone":142,"imei":"7a9b347be6a38ab92fc25f25001e5224"}
{"phone":143,"imei":"e22e3a5be7169a01f8774754e1b2683c"}
{"phone":18392,"imei":"13ad4ddb1e8979386fcbcd94976c89ab"}
{"phone":145,"imei":"ab7b47f4da30d940b09e875df79a1053"}
{"phone":146,"imei":"8e8fc94121a33726c61c22592f09e9d9"}
...

创建 Data Loading Job

本次案例将使用 GSQL 脚本来创建 DDL,我将之前创建的 Schema 图放在下方,方便参考。

Schema

先来为 orders.json 数据创建 DDL, 这份文件提供的是 Account -(send_bonus)-> BonusOrder -(recv_bonus)-> Account 的信息。

USE GRAPH MyGraph 是在创建一个 DDL 之前必须声明的,表示当前这个 DDL 是为哪张图创建的。

DROP JOB load_orders 的目的是删除名称为load_orders 的 DDL,如果之前创建过的话。

DEFINE FILENAME jsonfile 将定义一个文件名变量 jsonfile ,后续在进行数据导入操作的时候,我们可以将该变量赋值为数据文件的路径。

后续的语句较为简单,通过 $ 符号可以访问一条 json 数据中的字段值,并按照 Schema 中定义的属性的顺序,逐步将 json 数据中的字段与 Schema 中的点、边属性,对应起来。

USING JSON_FILE="true" 表明,当前数据文件为 json 格式。

接下来还需要为剩下的几个数据文件创建 DDL。

安装 DDL

编写并保存之后通过 GSQL 来安装 DDL

如果 DDL 脚本中首行没有写 USE GRAPH MyGraph 后续也可以通过参数 -g 来指定该脚本指代的图的名称:

这相当于在 xxx.gsql 的首行增加了 USE GRAPH MyGraph

可以通过 SHOW JOB * 来查看已经安装好的 DDL

导入数据

1. 通过载入服务器本地文件

将这几个数据文件放入服务器中 /home/tigergraph/invite_graph_data 下,以 load_orders 为例,通过 GSQL 来执行 DDL。

2. 通过 RESTful API 上传数据

很多时候,数据是实时产生的,需要及时更新的数据库中,可以考虑使用 HTTP 请求直接上传数据到数据库中。

TigerGraph 提供的 RESTful API,可以支持单条数据上传文件数据上传。下面以 curl 为例演示 API 调用方法。

2.1 单条数据上传

API 的路径为 /ddl/MyGraph ,参数 tag=load_devices 指明了 DDL 的名称,filename=jsonfile 即文件名变量的名称。

2.2 文件数据上传

最后更新于

这有帮助吗?