需要加入dse中的顶点

Posted

技术标签:

【中文标题】需要加入dse中的顶点【英文标题】:need to join the vertex in dse 【发布时间】:2019-03-16 14:54:43 【问题描述】:

我已经创建了类似的属性和顶点

schema.propertyKey('REFERENCE_ID').Int().multiple().create(); schema.propertyKey('Name').Text().single().create(); schema.propertyKey('PARENT_NAME').Text().single().create(); ………… .. schema.propertyKey('XXX').Text().single().create(); schema.vertexLabel('VERT1').properties("REFERENCE_ID",.."PROPERTY10"....."PROPERTY15")//15 特性 schema.vertexLabel('VER2').properties("REFERENCE_ID",.."PROPERTY20"......"PROPERTY35")//35 特性 schema.vertexLabel('VERT3').properties("REFERENCE_ID",.."PROPERTY20"....."PROPERTY25")//25 特性 schema.vertexLabel('VERT4').properties("REFERENCE_ID",.."PROPERTY20"....."PROPERTY25")//25 属性

并使用 DSG GRAPHLOADER(CSV TO(VERTEX)) 加载 csv 数据。

并创建边缘

schema.edgeLabel('ed1').single().create() schema.edgeLabel('ed1').connection('VERT1', 'VER2').add() schema.edgeLabel('ed1').single().create() schema.edgeLabel('ed1').connection('VERT1', 'VERT3').add() schema.edgeLabel('ed2').single().create() schema.edgeLabel('ed2').connection('VERT3','VERT4').add()

但我不知道如何在顶点和边之间映射数据。我想加入所有这 4 个顶点。你能帮忙吗?

我是 dse 的新手。我刚刚在datastax studio中成功运行了上面的代码,我可以看到加载的数据。我需要加入顶点...

Sql 代码:我想在 dse Germlin 中使用相同的代码。

select v1.REFERENCE_ID,v2.name,v3.total from VERT1 v1
 join VER2 v2 on v1.REFERENCE_ID=v2.REFERENCE_ID
 join VERT3 v3 on v2.sid=v3.sid

【问题讨论】:

【参考方案1】:

DSE 中有 2 个“主要”选项用于添加边缘数据,如果您还使用 DSE Analytics,则还有一个。

一个是使用 Gremlin,就像这里记录的一样 - https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/graph/using/insertTraversalAPI.html

这种方法是一种基于遍历的方法,可能不是批量操作的最佳/最快选择

另一种解决方案是使用图形加载器,请在此处查看带有 .asEdge 代码示例的示例 - https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/graph/dgl/dglCSV.html#dglCSV

如果您启用了 DSE 分析,您还可以使用 DataStax 的 DSE GraphFrame 实现(它利用 Spark)来执行此任务。这是一个例子 - https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/graph/graphAnalytics/dseGraphFrameImport.html

【讨论】:

这工作正常 g.V().hasLabel("vert1").as("a",'REFERENCE_ID','S_NAME')。 V().hasLabel("vert2").as("b",'TYPE','PHYSICAL') .filter(has("REFERENCE_ID","10234")) .where("a", eq("b ")) .by("REFERENCE_ID") .V().hasLabel("vert3").as("c",'HEIGHT','P_REFERENCE') .where("a", eq("c")) .by("REFERENCE_ID") .select("REFERENCE_ID",'S_NAME',TYPE','PHYSICAL','HEIGHT','P_REFERENCE') .by("REFERENCE_ID") .by('S_NAME') .by( 'TYPE') .by('PHYSICAL') .by('HEIGHT') .by('P_REFERENCE')

以上是关于需要加入dse中的顶点的主要内容,如果未能解决你的问题,请参考以下文章

无法在 DSE 图中打印节点属性

DSE:查询超时/慢

在使用 Java 的 Datastax DSE 5.0 Graph 中真的不需要 executeGraph()?

需要帮助启动 DSE Graph

数据存储企业DSE中的'hive on spark'?

DSE Solr 中的多个 OR 范围