开发者学堂课程【阿里云图数据库 GDB 入门与应用 :GDB 数据导入】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/623/detail/9449
GDB 数据导入
内容介绍:
一、通过 OSS 进行数据导入
二、通过 DataX 进行数据导入
三、通过 DataWorks 平台进行数据导入
首先来看我们的实例支持的三种数据导入方式
通过 OSS 进行数据导入
通过 DataX 进行数据导入
通过 DataWorks 平台进行数据导入
一、通过 OSS 进行数据导入
主要有三个步骤:
1. 从数据源生成 csv 格式文件
2. OSS Bucket RAM 授权
3. 调用数据导入 API 执行导入任务
通过 OSS 进行数据导入-生成 csv 格式文件
1.制定 MySQL、ODPS 等表格式数据到图数据库点/边的映射关系(首先需要对自己数据源中的表格式进行一个建模,例如建立一个实体表 person 或者 software 的点,之后制定一个点与边的关系表)
-实体表(person)∶标签为 person 的点
-实体表(software):标签为 software 的点
-关系表(learned):标签为 learned 的边
2. 转换表数据到 GDB 点/边格式的 CSV 文件,上传到阿里云 OSS
-推荐使用语言平台自带的 csv 导出工具
-添加 GDB 标题行到 csv 文件开头,再上传到阿里云 OSS
注意:
上传数据的阿里云 OSS 需要确保与 GDB 实例在同一个 region,比如都是“杭州"
要求 csv 文件的编码格式为 utf-8
通过 OSS 进行数据导入 -OSS 访问授权
1. 登录 GDB 控制台–实例列表页
2. 点击“数据导入 -OSS 授权”
3. 云资源访问授权页,点击“同意授权”
注意:如果是阿里云子账号,在进行 OSS 授权会出现“没有权限”的报错,可参考数据导入 -OSS 授权文档,先对子账号进行授权。如图:
通过 OSS 进行数据导入-执行导入任务
通过 curl 命令发起 HTTP POST 请求,开始导入任务
curl -u username : password -X POST \
-H 'Content-Type: application/json' \
gdb-endpoint:8182/loader -d '
{
"source" : "oss : / / bucket-name/object-key-name",
//此处需要指定一个source,即资源所在的路径
"format" : "csv",
//指定 csv 的格式
"ramRoleArn" : "acs:ram: :xxxxxxxx:role/aliyungdbaccessingossrole",
//资源描述符在 RAM 控制台获取
"failOnError" : "FALSE"
}
ramRoleArn 可通过 RAM 控制台获取,登录到 RAM 控制台的访问界面,点击左侧的 RAM 角色管理菜单,右侧就可以看到资源描述符,把该串放在请求体中
响应体:发起导入任务后的返回体,返回一个导入任务的id
{
status" : "200 OK",
"payload" : {
"loadId": "552617AF-4F1E-4CD8-9533-A2EC154688DC"
}
}
通过 OSS 进行数据导入-查询/取消导入任务
1. 通过 curl 命令发起 HTTP GET 请求,查询导入任务
GET gdb-endpoint:8182/loader
GET gdb-endpoint:8182/loader/${loaderId}
GET gdb-endpoint:8182/loader?loaderId=${loaderId}
2. 通过 curl 命令发起 HTTP DELETE 请求,取消导入任务
DELETE gdb-endpoint:8182/loader?loadId=${loadId}
DELETE gdb-endpoint:8182/loader/${loadId}
二、通过 DataX 进行数据导入
DataX 是什么?
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、OceanBase、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。
如图,GDB 也在上面做了一个支持:
DataX 开源地址:
https://github.com/alibaba/DataX?spm=a2c4g.11186623.2.21.7c644c07OfKtl6
通过 DataX 进行数据导入
GDB 提供 DataX 平台的 GdbWriter 插件,借助平台的数据接入能力,可以支持到 MySQL、Oracle、ODPS 等各种数据源到 GDB 的数据同步
支持源数据列到目标点/边数据的组合、拼接操作
支持插入、更新、跳过等不同等写入模式:插入按照 id 进行插入,更新是 id 重复后进行一个更新,跳过是如果id重复可以跳过继续往下写
如下是一个 writer 配置,可以看到也需要自己在控制台上找到 username、password,可以看到有三列
{
"writer": {
"name": "gdbwriter",
"parameter" : {
"host" : "localhost",
"port":8182,
"username": "username" ,
"password": "password",
"label": "act_in",
"labelType":"EDGE",
//进行对边操作
"writeMode":"MERGE",
"idTransRule" : "none",
"srcIdTransRule": "none",
"dstIdTransRule": "none" ,
"column":[
{
"name": "id",
"value" : "${2}",
"type": "string",
"columnType" : "primaryKey"
//边的主键,拿到第二列数据
},
{
"name" : "id",
"value" : "test-${0}",
"type": "string",
" columnType": "srcPrimaryKey"
//边的原点,拿到第零列数据
},
{
"name": "id",
"value" : "test-${1}"
"type": "string",
" columnType": "dstPrimaryKey"
//边的终点,拿到第一列数据
}
三、通过 Dataworks 平台进行数据导入
Dataworks 是什么?
DataWorks (数据工场,原大数据开发套件)是阿里云重要的 PaaS 平台产品,为您提供数据集成、数据开发、数据地图、数据质量和数据服务等全方位的产品服务,—站式开发管理的界面,帮助企业专注于数据价值的挖掘和探索。
如图:从源端数据通过 Reader 进行数据抽取,再通过传输通道到数据写入的插件
通过 Dataworks 平台进行数据导入
GDB 提供 DataWorks 平台的数据源服务(导出),可应用到用户的数据集成等任务中,将源端的数据,经过计算、筛选、转换等处理,再同步到 GDB
DataWorks 的 GDB 数据源底层由 GdbWriter 提供服务,同样支持源数据列到目标点/边数据的组合、拼接等特性,也支持插入、更新、跳过等写入模式
从MySQL 可以进行一些数据计算,例如到 Sark 平台上进行一些计算,最后写入目标点或者边