有没有办法从TitanDB图中创建JSON?
我可以将Titangraph加载到graphml,然后将其加载到Gephi上并使用一些插件输出为gexf/json.我想知道是否可以在不涉及Gephi的情况下完成这项工作,或者作为替代方案,只需使用Gephi Java API来创建gexf/json.我偏爱JSON,因为它的尺寸较小.
在我们的大型Titan Graph数据库中,我注意到以下行为:
\,,,/
(o o)
-----oOOo-(_)-oOOo-----
14:16:35 WARN org.apache.hadoop.util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
gremlin> g = TitanFactory.open('/home/willem/workspace/ovc/src/main/resources/titan-cassandra-es.properties')
14:16:44 WARN com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration - Local setting cache.db-cache-time=0 (Type: GLOBAL_OFFLINE) is overridden by globally managed value (180000). Use the ManagementSystem interface instead of the local configuration to control this setting.
==>titangraph[com.thinkaurelius.titan.diskstorage.cassandra.astyanax.AstyanaxStoreManager:[10.1.0.200]]
gremlin> g.indexQuery("mediaSerialNBStringIdx","v.mediaSerialNB:EB*").vertices().count()
==>937
gremlin> g.V().has("mediaSerialNB",PREFIX,"EB").count()
14:17:17 WARN com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx - Query requires iterating over all vertices [(mediaSerialNB PREFIX EB)]. For better performance, use indexes …Run Code Online (Sandbox Code Playgroud) 我使用gremlin-javascript模块访问远程gremlin服务器.我在app.js中的代码:
var gremlin = require('gremlin-client');
var client = gremlin.createClient(8182, 'localhost');
var query = client.stream('g.V()');
query.on('data', function(result) {
console.log(result);
});
query.on('end', function() {
console.log("All results fetched");
});
Run Code Online (Sandbox Code Playgroud)
这工作正常,所有查询都在执行.但当我用我的远程服务器地址--cbtitan.cloudapp.net替换'localhost'时,它会回复ECONNREFUSED错误.
我应该更改/做什么来连接到该远程服务器?或者我应该更改该远程服务器中的任何配置?我严重困扰这个问题,请帮帮我.提前致谢.
小鬼,server.yaml
host: localhost
port: 8182
threadPoolWorker: 1
gremlinPool: 8
scriptEvaluationTimeout: 30000
serializedResponseTimeout: 30000
channelizer: org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer
graphs: {
graph: conf/gremlin-server/titan-berkeleyje-server.properties}
plugins:
- aurelius.titan
scriptEngines: {
gremlin-groovy: {
imports: [java.lang.Math],
staticImports: [java.lang.Math.PI],
scripts: [scripts/empty-sample.groovy]},
nashorn: {
imports: [java.lang.Math],
staticImports: [java.lang.Math.PI]}}
serializers:
- { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}
- { …Run Code Online (Sandbox Code Playgroud) 我想很好地了解使用DynamoDB Titan后端的价格(以$计).为此,我需要能够理解DynamoDB Titan后端何时进行读写操作.现在我很无能为力.
理想情况下,我想运行一个测试用例,它添加一些顶点,边,然后进行相当简单的遍历,然后查看完成了多少次读写操作.有关如何实现这一目标的任何想法?可能通过指标?
如果事实证明我无法自己提取这些信息,我将非常感谢有关DynamoDB Titan后端何时执行读写操作的第一个简要说明.
我正在尝试使用BatchGraph在Titan中加载数据.使用TitanGraph作为对象参数.
根据Tinkerpop的Batch Implementation,这是实现应该如何:
TitanGraph g = TitanFactory.open("titan-cassandra.properties");
BatchGraph bgraph = new BatchGraph( g, VertexIDType.STRING, 1000);
Run Code Online (Sandbox Code Playgroud)
但是在BatchGraph构造函数中需要TrasanctionalGraph对象.所以,当我把它投射为:
TitanGraph g = TitanFactory.open("titan-cassandra.properties");
BatchGraph bgraph = new BatchGraph( (TransactionalGraph) g, VertexIDType.STRING, 1000)
Run Code Online (Sandbox Code Playgroud)
这会出现以下错误:
Exception in thread "main" java.lang.ClassCastException:
com.thinkaurelius.titan.graphdb.database.StandardTitanGraph cannot be cast to com.tinkerpop.blueprints.TransactionalGraph
Run Code Online (Sandbox Code Playgroud)
在这种情况下如何使用BatchGraph?如何处理?
我正在使用Titan 1.0.0和Blueprints 2.7.0以及cassandra 2.2.4版.
谢谢.
我是Titan/Gremlin/TinkerPop3的新手,正在玩/尝试Restful API Interface来创建/修改/删除数据库中的顶点/边缘.
我基本上想看看是否有可能使用tinkerpop3公开的API进行图形处理.
我使用以下命令在gremlin服务器中创建了现代图形:
gremlin> graph = TinkerFactory.createModern()
gremlin> g = graph.traversal()
Run Code Online (Sandbox Code Playgroud)
我可以通过restful API连接到Titan并执行:
curl "http://localhost:8182?gremlin=100-1"
{"requestId":"c2dfb667-0fbe-4796-9a5b-cc472487a5b0","status":{"message":"","code":200,"attributes":{}},"result":{"data":[99],"meta":{}}}
Run Code Online (Sandbox Code Playgroud)
但以下内容不会返回任何内容:
curl http://localhost:8182 -d '{"gremlin": "g.V()"}'
{"requestId":"8ba30f35-31e7-46ff-b16e-3e01fb9a49bf","status":{"message":"","code":200,"attributes":{}},"result":{"data":[],"meta":{}}}
Run Code Online (Sandbox Code Playgroud)
我做了我的阅读:http://tinkerpop.incubator.apache.org/docs/3.0.1-incubating/#_connecting_via_rest
非常感谢任何帮助.提前致谢.
TitanDB 1.0.0(在DynamoDB之上)
格雷姆林3
我有一组带有标签a的顶点.我在这些顶点上有一个long类型的属性,它对应于1970年UTC(创建顶点的时间戳)的时间(以毫秒为单位).当我拉回那些顶点时,我希望能够以降序顺序将它们拉回来.
如何在Titan Management System的decr顺序中为该属性创建索引?
文档似乎含糊不清.
我找到的最近的事情是
public RelationTypeIndex buildPropertyIndex(PropertyKey key,
String name,
Order sortOrder,
PropertyKey... sortKeys)
但是我把钥匙和sortKeys放进去了什么?我希望能够拉出timestamp属性排序的整个顶点
编辑:我知道在一分钟内执行此操作的唯一方法是在边缘复制该属性并使用边缘上的顶点中心索引来提高性能.
如何编写遍历使用Gremlin TinkerPop 3来查找没有传入边的所有顶点?
作为后续跟踪,我还需要找到一个没有外边缘的顶点.
在gremlin,
s = graph.traversal()
g = graph.traversal(computer())
我知道第一个用于OLTP,第二个用于OLAP.我知道OLAP和OLTP在定义级别上的区别.我对此有以下查询:
如何
提前致谢.
ts1=graph.addVertex(label,"test","test_id",872)
ts2=graph.addVertex(label,"test","test_id",873)
rj1=graph.addVertex(label,"req","id1",113,"status","S")
rj2=graph.addVertex(label,"req","id1",114,"status","S")
e1=rj1.addEdge("edgeA",ts1,"seq",1)
e2=rj2.addEdge("edgeA",ts2,"seq",2)
Run Code Online (Sandbox Code Playgroud)
我可以在单独的查询中获得以下内容:
g.V().hasLabel("req").has("status","S").outE("edgeA").valueMap()
==>[seq:1]
==>[seq:2]
g.V().hasLabel("job").has("status","S").outE("job_edge").inV().valueMap()
==>[test_id,872]
==>[test_id,873]
Run Code Online (Sandbox Code Playgroud)
如何在单个查询中更新序列和相应的test_id的
问题:
public void readTestbedJob(String tbName){
GraphTraversalSource traversalSource = getTitanTraversalSource();
GraphTraversal<Vertex, Map<String, Object>> query1 = traversalSource.V()
.has("req","id1",113).valueMap();
GraphTraversal<Vertex, Map<String, Object>> query2 = traversalSource.V().has("status","S").as("a").
outE("edgeA").as("e").
inV().as("v").
select("a","e","v").by(valueMap());
}
Run Code Online (Sandbox Code Playgroud)
从gremlin控制台:query1和query2都正确返回了结果。
但是,我无法直接在java中的query2中使用valueMap()或values(),
GraphTraversal<Vertex, Map<String, Object>> query2 = traversalSource.V().has("status","S").as("a").
outE("edgeA").as("e").
inV().as("v").
select("a","e","v").by(valueMap());
Run Code Online (Sandbox Code Playgroud)
1)当我在上面的查询中直接使用by(valueMap())或by(values())时,出现以下编译错误:未定义的函数valueMap()
2)代替by(valueMap()),by()仅返回顶点ID和边ID。a = v [16576],b = e [2pjpce-6eo-90r9-9ig] [edgeA],c = v [8304]}
您能帮我解决这个问题吗?我无法确定如何在Java中使用by(valueMap())。