2014-06-16 2 views
0

두 개의 색인을 만들었지 만 vertex.setProperties()을 호출하려고하면 "given name does not exist."라는 메시지가 나타납니다. 나는 ElementHelper.setProperties(vertex,flied[i],DataType.toString(objList.get(i))); 내 프로그램은 항상 '존재하지 않는 지정된 이름의 키를'반환 실행하면주어진 이름을 가진 Titan Key가 존재하지 않습니다.

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; 
       } 
      } 

과 : 다음은 내 코드입니다.

아이디어가 있으십니까?

+0

돼지없이 데이터를 삽입 할 수 있습니까? 예를 들어, Titan Console에서 삽입하면 작동합니까? –

답변

0

try/catch에 ElementHelper.setProperties를 래핑하고 속성 키 이름을 기록/인쇄하여 잘못된 속성 키를 확인하십시오. 그런 다음 graph.makeKey 세트에 추가하십시오.

관련 문제