全部产品

使用graph-loader导入数据

更新时间:2018-12-29 11:24:41

导入图库分为下列步骤

  • 准备图库schema文件
  • 准备vertex文件
  • 准备edge文件
  • 使用graph-loader工具导入

前提准备

graph-loader工具直接批量导入数据至hbase集群,所以需要提前开通hbase集群端口访问服务,联系钉钉号 云hbase答疑 帮助开通

工具下载地址

http://public-hbase.oss-cn-hangzhou.aliyuncs.com/installpackage/hgraphdb-loader.tar.gz

准备Schema文件

graph的Schema用于定义点和边的属性信息,为Json格式的文件。

在Schema中包含了标签(Label)和属性(Property)和索引(Index)。

标签(Label)

Label是属性(Property)的集合,描述了一个点或边拥有的所有Property的数据格式。

属性(Property)

Property指的是单个属性的数据格式,包含2个字段。

Property name:属性的名称,值得注意的是,同一个label中不能包含相同的Property name。但不同的label可包含同名Property name

type:数据类型,支持的的数据类型如下表所示。

类型 描述
Byte 10进制Byte值
Short short类型
Int/Integer 整数类型
Long 整数类型(取值范围-2^63 to 2^63-1)。
Float float浮点类型(32位浮点)。
Double double浮点类型
String 不定长字符串类型。
Boolean true/false
Date 支持如下格式:yyyy-MM-dd,yyyy/MM/dd,yyyy-MM-dd HH:mm:ss, yyyy/MM/dd HH:mm:ss
Time/Timestamp 输入为长整型(long)时间戳

索引(index)

索引用于通过某些属性值快速找到id,避免全表扫描,包含两个字段propertykey:属性列名称示例如下unique: 在该label范围内,索引的值是否唯一

示例如下

  1. {
  2. "vertexLabels": [
  3. {
  4. "name": "T1",
  5. "properties": [
  6. {
  7. "name": "id",
  8. "type": "String"
  9. },
  10. {
  11. "name": "T1-P1",
  12. "type": "String"
  13. }
  14. ],
  15. "indexes": [
  16. {
  17. "propertykey": "T1-P1",
  18. "unique": false
  19. }
  20. ]
  21. },
  22. {
  23. "name": "T2",
  24. "properties": [
  25. {
  26. "name": "id",
  27. "type": "String"
  28. },
  29. {
  30. "name": "T2-P1",
  31. "type": "String"
  32. },
  33. {
  34. "name": "T2-P2",
  35. "type": "Long"
  36. }
  37. ],
  38. "indexes": [
  39. {
  40. "propertykey": "T2-P1",
  41. "unique": false
  42. },
  43. {
  44. "propertykey": "T2-P2",
  45. "unique": false
  46. }
  47. ]
  48. }
  49. ],
  50. "edgeLabels": [
  51. {
  52. "name": "E1",
  53. "properties": [
  54. {
  55. "name": "E1-P1",
  56. "type": "Long"
  57. }
  58. ],
  59. "indexes": [
  60. {
  61. "propertykey": "E1-P1",
  62. "unique": false
  63. }
  64. ],
  65. "connections": [
  66. {
  67. "outV": "T1",
  68. "inV": "T2"
  69. }
  70. ]
  71. }
  72. ]
  73. }

准备顶点文件

点文件罗列了各个点的数据信息。一行为一个点的数据。格式如下所示第一列id是点数据的唯一标识,第二列是顶点label,一个顶点文件里面可以有多种顶点类型

  1. id, label, property 1, property 2, property 3,…

示例:

  1. 1,T1,scpEXoszLC
  2. 2,T1,Cyfxxhphnp
  3. 1000001,T2,SAuHvagzMi,78115824
  4. 1000002,T2,mSKCoZQxwa,61369275

准备边文件

边文件边文件罗列了各个边的数据信息,一行为一条边的数据。格式如下所示,id 1、id 2一条边的两个端点的id。第三列是边的label,同样一个边文件可已有多种边类型

  1. id 1, id 2, label, property 1, property 2,

示例:

  1. 1,1000001,E1,41009407
  2. 2,1000002,E1,54003294

执行导入

  1. sh run.sh import <hbase-url> <schema-file> <vertex-file> <edge-file> [skipSchema]

说明:

  • hbase-url: hbase集群的zk地址
  • schema-file: 上述准备好的schema文件路径
  • vertex-file:vertex文件路径
  • edge-file:edge文件路径
  • skipSchema:可选输入,指定skipSchema参数后,不再重复创建schema。如果已创建schema,再次导入加上skipSchema

示例

  1. sh run.sh import $zk1,$zk2,$zk3 ./test/schema.json ./test/vertex ./test/edge