我创建了两个索引但是当我想调用vertex.setProperties()
时,我的程序会提示“给定名称不存在。”。以下是我的代码:
initDB
public void tstInitHBase() {
Configuration conf = new BaseConfiguration();
conf.setProperty("storage.backend", "hbase");
conf.setProperty("storage.hostname", "192.168.22.209");
conf.setProperty("storage.port", "2181");
conf.setProperty("storage.tablename", "social_map");
conf.setProperty("cache.db-cache", "true");
conf.setProperty("cache.db-cache-clean-wait", "20");
conf.setProperty("cache.db-cache-time", "180000");
conf.setProperty("cache.db-cache-size", "0.5");
GraphDatabaseConfiguration graphconfig = new GraphDatabaseConfiguration(conf);
try {
graphconfig.getBackend().clearStorage();
} catch (StorageException e) {
e.printStackTrace();
throw new RuntimeException("Techvalley:ERROR 清空数据库失败");
}
TitanGraph graph = TitanFactory.open(conf);
graph.makeKey("PKID").dataType(String.class).indexed(Vertex.class).unique(UniquenessConsistency.LOCK).make();
graph.makeKey("CN_NAME").dataType(String.class).indexed(Vertex.class).make();
graph.makeKey("EDGE_PEERS_WEIGHT").dataType(Long.class).indexed(Edge.class).make();
graph.commit();
}
用猪插入数据
//objList structure is like (uuid,cn_name,gender,..)
vertex = tx.getVertex(DataType.toString(objList.get(0)));
if (vertex == null) {
logger.info("create node");
vertex = tx.addVertex(DataType.toString(objList.get(0)));
vertex.setProperty(flied[0], DataType.toString(objList.get(0)));
}
/**
*
* */
for (int i = 1; i < flied.length; i++) {
switch (DataType.findType(objList.get(i))) {
case DataType.NULL:
logger.info("cache" + flied[i] + " " + DataType.toString(objList.get(i)));
ElementHelper.setProperties(vertex, flied[i],DataType.toString(objList.get(i)));
break;
case DataType.CHARARRAY:
logger.info("cache" + flied[i] + " " + DataType.toString( objList.get(i)));
ElementHelper.setProperties(vertex, flied[i],DataType.toString(objList.get(i)));
break;
default:
break;
}
}
执行ElementHelper.setProperties(vertex,flied[i],DataType.toString(objList.get(i)));
时,我的程序始终返回'给定名称的密钥不存在'。
有什么想法吗?
答案 0 :(得分:0)
通过在try / catch中包装ElementHelper.setProperties并记录/打印属性键名来找出有问题的属性键。然后将其添加到graph.makeKey set。