我在ec2示例上运行了一个janusgraph,对于它的后端存储,我在ec2上也有cassandra集群。我想将聚合和过滤数据从运行在amazonemr上的python代码apachespark(pyspark)推送到janusgraph。
我已经搜索了:
我读过使用gremlin在这里插入的内容,但是它定义了对单个顶点和边的插入。我想它被插入一次,可能就像推所有的Dataframe到janusgraph。
有没有什么有效的方法可以直接从spark批量插入,而不必将其转换为csv或从bash执行命令的任何中间步骤
1条答案
按热度按时间1l5u6lss1#
我花了大约两周的时间来寻找答案,把它贴出来,这样它就能帮助别人。
要编写在远程计算机上运行的Dataframe,可以使用
gremlin
,但是为了有效地阅读(如果您想添加边),您可能需要SparkGraphComputer
. 因为我的用例主要是插入。我现在要集中精力如果您想从头开始进行图形遍历和配置,请遵循长答案/安装
简短回答(从spark插入顶点/边并从远程查询janus)
你需要安装gremlin(
sudo pip install gremlinpython
)在远程,你可以像这样插入边1) 基本gremline导入与远程图形对象的生成
2) 对于顶点
3) 对于边
从远程测试顶点计数(导入和图形对象与以前类似)
=> 11800
长答案/配置:
在这里,我假设您的数据存储和janus在不同的示例中,但是我已经给出了本地的todo提示,如果它们不是
在janus服务器节点上,为python gremlin和tinkerpop安装jars
首先编辑/创建连接到gremlin的配置文件(janusgraph.properties)。
编写这些配置(注意gremlin.graph和graph.graphname)
备份默认的gremlin服务器配置
将configuredgraphfactory配置设为默认值
现在编辑conf/gremlin-server/gremlin-server.yaml
进行此更改(设置主机,从文件数组[]中删除任何内容)
运行gremlin服务器
编辑conf/remote.yaml并定义您的janusgraph ip(如果您从同一台机器加入gremlin控制台,也可以使用127.0.0.1)
将主机端口更改为
打开控制台
连接到远程(本例中为本地)8182端口
下一步,把所有的命令转移到你的janusgraph上运行:8154
创建图形,
不要关闭gremlin,也不要关闭服务器(如您所愿或如下所示)
编辑script/empty-sample.groovy使graph1成为遍历源
再次编辑conf/gremlin-server/gremlin-server.yaml
进行这些更改,并将groovy添加到脚本到文件中,以便启用从远程进行遍历的访问
重新运行gremlin服务器
现在,从远程pc连接到janus。
安装gremlin python
去
step 1 of short answer
(gremlin导入和图形对象)远程测试顶点
=> 11800
电子病历
把它放在引导程序中,这样就可以在执行spark脚本步骤之前安装gremlin了