暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

快速上手 Transwarp StellarDB 教程

原创 明智健悟 2023-02-17
1267

本章节将引导您快速熟悉StellarDB,并为您初步介绍如何通过KG Explorer和beeline客户端操作StellarDB。其中,"StellarDB初探"一节通过构建一张人物关系图,从零介绍如何在StellarDB进行基本操作;"StellarDB进阶"一节为您提供了内置于StellarDB的《哈利·波特》人物关系图,帮助您进一步探索StellarDB。

1. StellarDB初探

1.1. 使用KG Explorer构建图

  1. 从TDH Manager页面进入KG Explorer页面。若KG Explorer开启了单点登录,会自动跳转Federation登录页面,选择“租户内用户”,并提供相对应的用户名和密码按如图方式登录:
  1. 点击 登录 后进入KG Explorer主页面。在语句查询输入框中输入如下建图语句构建图"hello_world"的schema。(该语句创建了一个分区为3,服本数为3,名称为"hello_world"的图。图中包含Boy和Girl两种类型的点,两个点均包含name、salary、age、single四个属性,对于每个属性设定相应的数据类型。图中包含Friend和Likes类型的边,边属性均为since,数据类型为int)
  • create graph hello_world WITH schema (:Boy {name string, salary double, age int, single boolean}) (:Girl {name string, salary double, age int, single boolean}) [:Friend {since int}] [:Likes {since int}] graphproperties:{`graph.shard.number`:3, `graph.replication.number`:3};
  • quickstart create hello world
  • 点击 查询 按钮,完成"hello_world"的图schema的创建。
  1. 创建"hello_world"的schema后,在查询语句输入框中输入并执行如下语句设置"hello_world"图为当前使用中的图。
  • use graph hello_world;
  1. 在"hello_world"图中插入点数据。请在查询语句输入框中分别输入、执行下列语句。
  • # 插入一个类型为Girl的点,并对属性赋值,__uid为1
    create (:Girl {name:"Kitty", age:23, salary:4250.95, single:true, __uid:"1"});

    # 插入两个点,类型分别为Girl和Boy,不对属性赋值,__uid分别为2和1
    create (:Girl {__uid: "2"}), (:Boy {__uid:"1"});

    # 插入一个点,类型为Girl,对name属性赋值Lisa,__uid为3,设置点标签为human和student
    create (:Girl {__uid: "3", name: "Lisa", __tags: ["human", "student"]});
  1. 在"hello_world"图中插入边数据。请在查询语句输入框中分别输入、执行下列语句。
  • # 插入一条类型为Likes的由John指向Rose有向边,插入边的同时插入两个点,类型分别为Boy和Girl,并且对name属性赋值,__uid分别为2和4
    create (:Boy {__uid:"2", name:"John"})-[:Likes]->(:Girl {__uid: "4", name: "Rose"});

    # 插入一条类型为Likes的由Amy指向John有向边,插入边的同时插入一个点,类型为Girl,并且对name属性赋值Amy,__uid为5
    match (a:Boy {__uid:"2"}) create (a)<-[:Likes]-(:Girl {__uid:"5", name: "Amy"});

    # 插入一条类型为Friend的连接John和__uid为1的Boy节点的无向边
    match (a:Boy {__uid:"1"}),(b:Boy {__uid:"2"}) create (a)-[:Friend]-(b);

    # 插入两条类型为Friend的有向边,其中一条是从__uid为1的Girl类型节点指向__uid为2的Girl类型节点,另外一条是从__uid为3的Girl类型节点指向__uid为2的Girl类型节点
    match (a:Girl {__uid:"1"}),(b:Girl {__uid:"2"}),(c:Girl {__uid:"3"}) create (a)-[:Friend]->(b),(b)<-[:Friend]-(c);

    # 直接创建uid为1的Boy到uid为3的Girl的单向边,并指定边的__uid为relation_1
    create [:Likes {__uid:"relation_1",__usid:"1",__udid:"3",__uslabels:["Boy"],__udlabels:["Girl"]}];
  1. 图查询:在查询输入框中输入并执行下列查询语句。
    1. 查询图中所有相连的点,并返回所有点和边。
    • match (m)-[f]-(n) return m,f,n;
    • 查询结果如图示:
    • quickstart hello world query1
    1. 查询John喜欢的人的名字。
    • match (a:Boy {name:"John"})-[:Likes]->(b:Girl) return b.name;
    • 查询结果如图示:
    • quickstart hello world query2
    1. 查询John的朋友的朋友的名字。
    • match (a:Boy {name:"John"})-[:Friend*..2]->(b) return b.name;
    • 查询结果如图所示。(该语句执行结果返回两个Boy类型的点,是因为在创建__uid为1的Boy类型点时没有对name属性赋值,所以显示null)
    • quickstart hello world query3
  2. 算法调用(以PageRank为例)
    1. 使用KG Explorer图算法库调用:如图示,在KG Explorer界面进入图示图算法库界面。点击 PageRank 算法,并且配置相应参数,点击 执行 按钮执行算法。
    • quickstart hello world pagerank kge
    1. 或使用TEoC语句调用:在查询输入框中输入并执行下列语句。
    • create query temporary graph view hello_world_sample as (v) [e] with graph_pagerank(@hello_world_sample,"/tmp/hello_world_view", '{factor: 0.85, rounds: 10, limit: 10}') as unapply(vertex, rank) return node_rk_to_uid(vertex), rank;
    • 执行结果如图示。
    • quickstart hello world pagerank query
  3. 删除数据
  • 在查询语句输入框中输入并执行下列语句进行删除操作。
    1. 删除name属性为Amy的点。
    • match (a) where a.name="Amy" delete a;
    1. 删除label为Likes的边。
    • match [f:Likes] delete f;
  1. 数据导入
    1. 在计算机本地准备如下所示包含点和边的CSV数据文件,并按照后文所述使用KG Explorer将数据导入至StellarDB中。(NA表示该属性空缺)
    • 表 1. 点数据表

uid

ulabel

name

salary

age

single

10

Boy

Bob

5000

23

true

10

Girl

Beth

NA

NA

NA

    • 表 2. 边数据表

usid

uslabel

udid

udlabel

uelabel

since

10

Boy

10

Girl

Friend

10

1

Boy

2

Girl

Likes

NA

    1. 登入KG Explorer,将鼠标移动至如下图所示图标 位置1 ,待菜单弹出后,点击图示按钮2 从CSV文件导入
    • quickstart hello world load1
    1. 进入 数据导入 管理页面,点击图示 数据源管理 按钮1。
    • quickstart hello world load2
    1. 数据源文件管理 页面,点击图示 上传文件 按钮1,打开 上传CSV文件 窗口,配置 分隔符 并且选择本地上传文件。
    • quickstart hello world load3
    • 在本例中,使用的分隔符是英文逗号","。
    1. 上传点和边的CSV文件后,点击 编辑文件列名及类型 按钮,对点和边文件中的列名和类型进行配置。本例只需要依据图创建语句修改列对应的数据类型。
      1. 依据图示修改边数据表中的since列数据类型为int。
      • quickstart hello world load4
      1. 依据图示修改点数据表中的salary列数据类型为double,age列数据类型为int,single列数据类型为boolean。
      • quickstart hello world load5
    2. 配置列名和列对应数据类型后,点击 去导数 按钮进入 从CSV文件导入数据 页面。点击 添加数据源 按钮,选择点、边数据表。在表单中 点/边 列点选对应的点或者边选项。
    • quickstart hello world load6
    1. 之后,点击 配置属性映射 进行属性配置。配置方法见下图。
      1. 配置边:
      • quickstart hello world load7
      1. 配置点:
      • quickstart hello world load8
    • 应用所有配置后,在页面右下方点击 导入 按钮,等待数据导入。
  1. 数据导出
  • 这里通过在查询输入框中执行下列语句,并且将结果以CSV格式导出。
  • match (n)-[f:Friend]-(m) return n, m, f;
  • 在查询输入框中输入并且执行上述语句,点击图示 结果相关 按钮,鼠标移动至 导出图谱,点击 导出CSV 按钮,待文件导出完毕。
  • quickstart hello world export
  1. 删除图
  • 在查询输入框中输入并且执行下列语句删除"hello_world"图。
  • drop graph hello_world;

4.1.2. 使用beeline构建图

在进入命令行之前,请用户确保已经在当前的操作节点上已安装TDH Client。具体步骤请参考 《TDH安装手册》。

  1. 进入命令行
  • 在本小节中,将使用 server_ip|hostname 来指代Quark Server所在的节点名称或ip。Quark Server所在节点可以通过管理界面的Quark角色页面查看。
  • 用户可以选择用不同的安全认证方式在任意一台服务器上登录beeline客户端,登陆方式如下:

安全认证方式

登录指令

没有安全认证

beeline -u "jdbc:hive2://<server_ip/hostname>:10000/"
例如: beeline -u "jdbc:hive2://172.0.0.1:10000/"

LDAP认证

beeline -u "jdbc:hive2://<server_ip/hostname>:10000/<database_name>" -n <username> -p <password>
例如: beeline -u "jdbc:hive2:// 172.0.0.1.35:10000/" -n admin -p 123456

Kerberos认证

beeline -u "jdbc:hive2://<server_ip/hostname>:10000/<database_name>;principal=<princpal_name>"
例如: beeline -u "jdbc:hive2:// 172.0.0.1:10000/;principal=hive/idc36@TDH"

TIP

(1). 使用客户端前请执行source /<tdh-client_install_path>/TDH-Client/init.sh

(2). 关于安全认证的详细介绍请参考 Transwarp Guardian手册

  1. 登陆beeline客户端成功后,执行下列语句将查询语言切换为TEoC。
  • config query.lang cypher;
  1. 执行下列语句查看是否有"hello_world"同名的图,若有,请在后续操作中按需修改查询语句,或删除原"hello_world"图,再进行后续操作。
  • show stellargraphs;
  1. 参照前文步骤2-4进行图数据库创建和图数据的填充。这里不再赘述。
  2. 执行下列查询语句,校验"hello_world"点数据是否正确填充。
  • match (n) return n.__uid,labels(n),n.name;
  • 查询结果如图示:
  • quickstart hello world beeline query1
  1. 执行下列查询,校验"hello_world"边数据是否正确填充。
  • match [f] return f.__uid,labels(f),startid(f),endid(f);
  • 查询结果如图示:
  • quickstart hello world beeline query2
  1. 图查询
    1. 查询John喜欢的女孩的名字。
    • match (a:Boy {name:"John"})-[:Likes]->(b:Girl) return b.name;
    • 结果如图示:
    • quickstart hello world beeline query3
    1. 查询John的朋友的朋友的名字。
    • match (a:Boy {name:"John"})-[:Friend*..2]->(b) return b.name;
    • 结果如图示:
    • quickstart hello world beeline query4
  2. 算法调用(以PageRank算法为例)
  • 在beeline客户端中输入并执行下列语句调用PageRank算法,其他算法使用方法和所示方法相同。
  • create query temporary graph view hello_world_sample as (v) [e] with graph_pagerank(@hello_world_sample,"/tmp/hello_world_view", '{factor: 0.85, rounds: 10, limit: 10}') as unapply(vertex, rank) return node_rk_to_uid(vertex), rank;
  • 结果如图示:
  • quickstart hello world beeline query5
  1. 删除数据
    1. 删除name属性为Amy的节点。
    • match (a) where a.name="Amy" delete a;
    1. 删除label为Likes的边。
    • match [f:Likes] delete f;
  2. 删除图"hello_world"
  • drop graph hello_world;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论