2013-05-15 1 views
1

내 코드 :Hector API를 사용하여 수퍼 컬럼을 만드는 방법은 무엇입니까?

public class InsertSuperColumn { 

    private static StringSerializer stringSerializer = StringSerializer.get(); 

    public static void main(String[] args) throws Exception { 

     Cluster cluster = HFactory.getOrCreateCluster("TestCluster", "localhost:9160"); 

     Keyspace keyspaceOperator = HFactory.createKeyspace("Keyspace1", cluster); 

     try { 
      Mutator<String> mutator = HFactory.createMutator(keyspaceOperator, stringSerializer); 
      mutator.insert("billing", "Super1", HFactory.createSuperColumn("jsmith", 
        Arrays.asList(HFactory.createStringColumn("first", "John")), 
        stringSerializer, stringSerializer, stringSerializer)); 

      SuperColumnQuery<String, String, String, String> superColumnQuery = 
       HFactory.createSuperColumnQuery(keyspaceOperator, stringSerializer, stringSerializer, 
         stringSerializer, stringSerializer); 
      superColumnQuery.setColumnFamily("Super1").setKey("billing").setSuperName("jsmith"); 

      QueryResult<HSuperColumn<String, String, String>> result = superColumnQuery.execute(); 

      System.out.println("Read HSuperColumn from cassandra: " + result.get());    
      System.out.println("Verify on CLI with: get Keyspace1.Super1['billing']['jsmith'] "); 

     } catch (HectorException e) { 
      e.printStackTrace(); 
     } 
     cluster.getConnectionManager().shutdown(); 

    } 
} 

는이 오류를 얻고는 :

Exception in thread "main" me.prettyprint.hector.api.exceptions.HInvalidRequestException: 
InvalidRequestException(why:Keyspace names must be case-insensitively unique ("new2" conflicts with "new2")) 
+0

수퍼 컬럼 사용을 피해야합니다. CQL에서는 지원되지 않으며 속도가 느립니다. 대신 CompositeType을 사용하십시오. – Richard

+0

리차드가 말했듯이 수퍼 컬럼을 사용하지 마십시오. 사용 중지됨 – abhi

답변

1

문제는 당신이 슈퍼 열을 여러 번 저장할 키 스페이스열 가족를 작성하는 것입니다. 그럴 수 없다면 키 공간열 패밀리의 이름을 고유하게 지정해야합니다. 코드에 관한 한

why:Keyspace names must be case-insensitively unique 
("new2" conflicts with "new2") 

그래서 멀리, 제대로 supercolumn을 만들었습니다 수 : 즉, 예외가 당신에게 말하고있는 것입니다. Cassandra CLI를 사용하여 확인하십시오.