2013-11-27 32 views
4

在过去的几周里,我一直在尝试泰坦,并希望有一些关于前进方向的指针,以及一些具体问题。该项目的目的是将日志数据存储在Cassandra群集上(对于这个问题,我们使用Web流量的示例)并在Titan图表中表示关系。所有节点被建模为具有实体值和类型(例如“google.com”,“hostname”),并且边具有标签(例如“连接”)以及关系的几个属性(时间戳,流程长度等等上)。泰坦+ d3用于计算机网络可视化

一旦这些数据存储在cassandra中并表示为一个Titan图形,我打算使用d3代码来生成可视化。在隧道的尽头,我希望能够建立大规模,看起来像这样的互动,复杂的图形网络:http://goo.gl/CVEd55

我目前的设置如下:

  • Python脚本将日志文件转换为vertices.csvedges.csv文件精怪在
  • Titan Server 0.4(使用CassandraThrift作为存储后端)加载 - 小鬼脚本转换后的数据加载到泰坦
  • 使用NetworkX打开RexPro连接
  • Python脚本,所有由于分析者输入自定义的Gremlin查询,输出其结果作为一个JSON
  • 本地Web使用生成的JSON和d3以显示查询的结果作为曲线图

理想地作为前端测试基本情况下,我希望用户能够在Web前端输入Gremlin查询并将其定向到包含结果的交互式d3图表的页面。

我的具体问题是有如下:

  1. 什么是对边缘分配属性的过程?我无法找到帮助我使用上面列出的模型来表示图形的示例代码。

  2. 我的gremlin脚本将数据加载到Titan中,使用bg.commit()来创建一个批处理图形,该图形稍后会在RexPro连接conn= RexProConnection('localhost,8184,'bg')中引用。这是最初的工作,但在更改我的加载脚本后,清除Gremlin中的图形,然后重新加载,由于图形bg显然不存在,RexPro连接无法打开。 Titan更新图表的过程是什么?假设使用相同的图形运行加载脚本两次只会将节点/顶点添加到现有的脚本中,那么每次更新模型时如何生成一个具有相同名称的新图,并让RexPro能够引用它当运行查询?

  3. 扩展接口以允许分析人员在前端输入SQL查询有多简单,使用RexPro以类似于所描述的方式访问图形?

对于长文章的道歉,但如果任何人都可以分享他们的专业知识,将不胜感激!

回答

0

什么是为边缘分配属性的过程?

的方法是相同的添加属性到顶点。找一个Edge实例,然后做:

Edge e = g.addEdge(v1,v2,'label') 
e.setProperty('weight',0.1d) 

至于:

什么是泰坦更新图的过程?假设使用相同的图形运行加载脚本两次只会将节点/顶点添加到现有的脚本中,那么每次更新模型时如何生成一个具有相同名称的新图,并让RexPro能够引用它当运行查询?

你不想装在经过了参考的BatchGraph,因为它带有limitations会阻止您查询。这听起来像你应该只配置“yourgraph”在rexster.xml,当你通过你的脚本加载,则只需将您的rexster.xml配置在你的代码Graph,并执行你的负荷运作反对。当你想查询它时,只需引用“yourgraph”而不是“bg”。

conn = RexProConnection('localhost,8184,'yourgraph') 

这将是多么容易被扩展接口,允许分析师进入SQL查询到前端,使用RexPro访问以类似的方式曲线图所描述的一个?

很难说这是否“容易”,因为这取决于技术之外的因素。我会说可以构建一个接受Gremlin查询的接口(你写的SQL,但我认为你的意思是Gremlin),将它们传递给Rexster并获取回答。你对这个答案的处理取决于你,但就雷克斯特的角色而言,我不明白为什么这会是一个问题。

+0

嗨斯蒂芬,感谢您的回复!边上的属性解释是非常有用的。 至于批处理图 - 我目前在一个Gremlin加载脚本中创建了一个图g,然后是使用g的批处理图。所有的数据加载都使用bg函数完成,但在我的Python NetworkX可视化脚本中,查询使用g完成。这似乎工作正常。我是否正确地说,一旦你创建了一个正常的批处理图,更新g的引用也会更新bg? – adaml288

+0

从最后的评论继续为我跑出线: 道歉,如果我的第三个问题困惑你咯。我的意思是我已经有了一个界面,可以让用户在Web前端输入Gremlin查询,以便根据查询生成图形。我通过制作RexPro连接并传递查询来完成此操作。 什么,我其实在寻找的东西,可以让分析师谁可能不熟悉精怪要能写简单的查询,以类似的方式返回数据。所以无论是CQL,SPARQL还是类似的。 再次欢呼。 – adaml288

+0

如果你在'rexster.xml'中没有定义'g'而创建'g',那么它将不在RexPro会话之外(我假设你正在使用RexPro进行会话通信)。如果这是确定,那么,你应该能够重新使用'g'基准(因为这将无法正常工作不使用'bg'进行查询。 –