apache-spark - TigerGraph - 通过 Spark 将数据加载到用户定义的元组
问题描述
谁能帮我弄清楚我们如何将数据加载到在 TigerGraph DB 中创建的元组中?我创建了以下元组,我正在尝试使用 Spark 从文件中加载数据。
图表名称:MyGraph 元组名称:MyTuple
MyTuple 的属性:ID String(50)、Datee Datetime
元组 MyTuple 被引用到 MyGraph 的边缘 (ed_newEdge) 作为边缘属性。寻求帮助以了解如何使用 Spark 将数据加载到 MyGraph 中的元组中。
解决方案
您可以使用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调用上面创建的加载作业
推荐阅读
- amazon-web-services - AWS 通过 CLI 部署 ECS 服务
- python - 将 Dataframe 从几天转换为几周并聚合数量列
- java - 一次仅由一个线程使用对象
- python - 如何传递在 python 脚本中创建的变量以在 bash 脚本中使用?
- python - 需要使用密码连接 cassandra 并使用 python 执行 CQL 的脚本
- navbar - 如何编写css以使图像位于粘性水平导航栏下方?
- r - R函数根据条件进行汇总(sum x [y> 0])
- sql - 如何通过查询在 Teradata SQL 中设置 SAMPLE 大小
- python - neo4j如何从选定的起始节点返回所有路径
- eclipse - Eclipse Oomph:禁止欢迎页面