2014-02-06 8 views
0

저는 Cassandra를 처음 사용하기 때문에 예외입니다. pycassa API를 사용하여 열 패밀리를 만들고 싶습니다. 다음 코드를 사용하여 열 패밀리를 만들었습니다.pycassa는 cassandra-cli에서 볼 때 열 패밀리 예외를 생성합니다.

validators = {'full_name': UTF8_TYPE, 
      'email': UTF8_TYPE, 
      'state': UTF8_TYPE, 
      'gender': UTF8_TYPE, 
      'birth_year': LONG_TYPE} 

sys.create_column_family('TestKeyspace', 'TestCF', super=False, 
      comparator_type=UTF8_TYPE, 
      key_validation_class=UTF8_TYPE, 
      column_validation_classes=validators) 

python 스크립트는 예외없이 잘 실행됩니다. 그러나 나는이 칼럼을 카산드라 -cli를 사용하여 확인했습니다. 다음과 같은 예외가 있습니다.

UnavailableException() 
     at org.apache.cassandra.thrift.Cassandra$get_range_slices_result$get_range_slices_resultStandardScheme.read(Cassandra.java:17439) 
     at org.apache.cassandra.thrift.Cassandra$get_range_slices_result$get_range_slices_resultStandardScheme.read(Cassandra.java:17397) 
     at org.apache.cassandra.thrift.Cassandra$get_range_slices_result.read(Cassandra.java:17323) 
     at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78) 
     at org.apache.cassandra.thrift.Cassandra$Client.recv_get_range_slices(Cassandra.java:802) 
     at org.apache.cassandra.thrift.Cassandra$Client.get_range_slices(Cassandra.java:786) 
     at org.apache.cassandra.cli.CliClient.executeList(CliClient.java:1520) 
     at org.apache.cassandra.cli.CliClient.executeCLIStatement(CliClient.java:285) 
     at org.apache.cassandra.cli.CliMain.processStatementInteractive(CliMain.java:201) 
     at org.apache.cassandra.cli.CliMain.main(CliMain.java:331) 

왜이 오류가 발생하는지 알 수 없습니다. 누구나 동일한 코드를 사용할 수 있습니까? 미리 감사드립니다.

답변

2

Keyspace를 어떻게 만들었으며 Keyspace의 복제 설정은 무엇입니까? UnavailableException은 쿼리에 응답 할 라이브 복제본이 충분하지 않다는 것을 의미합니다. 내 생각 엔 실수로 복제 요소를 너무 높게 설정했거나 NetworkTopologyStrategy을 사용하고 복제 설정의 데이터 센터 이름이 노드의 실제 데이터 센터 이름과 일치하지 않는 것 같습니다.

+0

아니요, 복제 계수는 1이고 SIMPLE 전략을 사용하고 있습니다. 다음은 코드 조각입니다. sys.create_keyspace ('db5', SIMPLE_STRATEGY, { 'replication_factor': '1'}) ' – Narendra

+0

그런 경우 두 개 이상의 노드 또는 하위 노드가 있습니까? 각 노드에서'nodetool status'를 실행하여 다른 노드가 다운되었다고 생각하는지 확인하십시오. –

+0

예, 3 노드 클러스터가 있고 나머지 두 노드는 다운되었습니다. 그래서, 내가 죽은 노드를 정리 & 이제 나는 pycassa API를 사용하여 삽입 한 cassandra-cli (예외없이)의 데이터를 볼 수 있습니다. 대단히 감사합니다. 좋은 일을 계속 지켜라. – Narendra