首页 > 解决方案 > TigerGraph - 通过 Spark 将数据加载到用户定义的元组

问题描述

谁能帮我弄清楚我们如何将数据加载到在 TigerGraph DB 中创建的元组中?我创建了以下元组,我正在尝试使用 Spark 从文件中加载数据。

图表名称:MyGraph 元组名称:MyTuple

MyTuple 的属性:ID String(50)、Datee Datetime

元组 MyTuple 被引用到 MyGraph 的边缘 (ed_newEdge) 作为边缘属性。寻求帮助以了解如何使用 Spark 将数据加载到 MyGraph 中的元组中。

标签: apache-sparkintellij-ideatuplesgraph-databasestigergraph

解决方案


您可以使用tigergraph jdbc 驱动程序将数据插入到元组中。你可以在这里找到一个例子https://github.com/tigergraph/ecosys/blob/master/tools/etl/tg-jdbc-driver/tg-jdbc-examples/src/main/java/com/tigergraph/jdbc/ UpsertQuery.java

按照上面的代码创建连接后,您可以使用下面的代码片段

try (java.sql.Statement stmt = con.createStatement()) {
      query = "INSERT INTO edge ed_newEdge(Vertex1, Vertex2) VALUES(MyTuple("1d123","2011-02-03 01:02:03"))";
      stmt.addBatch(query);}

或者,您可以在 SPARK 上处理您的数据,并在 Parquet 或 csv 文件上序列化您的数据。然后您可以创建一个 GSQL 加载作业来读取该文件并将值插入到您的元组中。https://docs.tigergraph.com/dev/gsql-ref/ddl-and-loading/creating-a-loading-job#loading-a-user-defined-type-udt-attribute

TYPEDEF TUPLE <f1 INT (1), f2 UINT, f3 STRING (10), f4 DOUBLE > myTuple   # define a UDT
CREATE VERTEX v_udt  (id STRING PRIMARY KEY, att_udt myTuple)
CREATE GRAPH test_graph (v_udt)
CREATE LOADING JOB load_udt FOR GRAPH test_graph {
    DEFINE FILENAME f;
    LOAD f TO VERTEX v_udt VALUES ($0, myTuple($1, $2, $3, $4) ); 
    # $1 is loaded as f1, $2 is loaded as f2, and so on
}
RUN LOADING JOB load_udt USING f="./udt.csv"

现在您可以使用休息请求https://docs.tigergraph.com/dev/gsql-ref/ddl-and-loading/running-a-loading-job调用上面创建的加载作业


推荐阅读