Я пытаюсь создать базу данных cassandra с использованием кластера с одним узлом (я думаю), но независимо от того, какое значение я задал для репликации фактор, я все время получаю эту ошибку:Cassandra-Hector Single-Node Cluster HUnavailableException:: Может быть недостаточно реплик для обработки уровня согласованности
me.prettyprint.hector.api.exceptions.HUnavailableException:: Не может быть достаточного количества реплик для управления уровнем согласованности.
Вот мой код:
public static String[]getSerializedClusterMap(){
Cluster cluster=HFactory.getOrCreateCluster("TestCluster", "localhost:9160");
// Keyspace keyspace=HFactory.createKeyspace("KMeans", cluster);
KeyspaceDefinition keyspaceDefinition=cluster.describeKeyspace("myKeyspace");
if (cluster.describeKeyspace("myKeyspace")==null){
ColumnFamilyDefinition columnFamilyDefinition=HFactory.createColumnFamilyDefinition("myKeyspace","clusters",ComparatorType.BYTESTYPE);
KeyspaceDefinition keyspaceDefinition1=HFactory.createKeyspaceDefinition("myKeyspace",ThriftKsDef.DEF_STRATEGY_CLASS,1,Arrays.asList(columnFamilyDefinition));
cluster.addKeyspace(keyspaceDefinition1,true);
}
Keyspace keyspace=HFactory.createKeyspace("myKeyspace", cluster);
Mutator<String>mutator=HFactory.createMutator(keyspace, me.prettyprint.cassandra.serializers.StringSerializer.get());
String[]serializedMap=new String[2],clusters={"cluster-0","cluster-1"};
try{
me.prettyprint.hector.api.query.ColumnQuery<String,String,String> columnQuery=HFactory.createStringColumnQuery(keyspace);
for(int i=0;i<clusters.length;i++){
columnQuery.setColumnFamily("user").setKey("cluster").setName(clusters[i]);
QueryResult<HColumn<String,String>>result=columnQuery.execute();
serializedMap[i]=result.get().getValue();
}
}catch (HectorException ex){
ex.printStackTrace();
}
return serializedMap;
}
Любые предложения о том, что я должен делать, или о том, что значение коэффициента репликации должно быть?
После запуска «use keyspace» myKeyspace; ' и «описывают;», выход:
Keyspace: myKeyspace:
Replication Strategy: org.apache.cassandra.locator.SimpleStrategy
Durable Writes: true
Options: [replication_factor:3]
Column Families:
ColumnFamily: user
Key Validation Class: org.apache.cassandra.db.marshal.BytesType
Default column value validator: org.apache.cassandra.db.marshal.BytesType
Cells sorted by: org.apache.cassandra.db.marshal.BytesType
GC grace seconds: 864000
Compaction min/max thresholds: 4/32
Read repair chance: 1.0
DC Local Read repair chance: 0.0
Populate IO Cache on flush: false
Replicate on write: true
Caching: KEYS_ONLY
Bloom Filter FP chance: default
Built indexes: []
Compaction Strategy: org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy
Compression Options:
sstable_compression: org.apache.cassandra.io.compress.SnappyCompressor
Вы можете запустить cqlsh и включить вывод 'describe keyspace 'myKeyspace.' Также если это новое приложение, я бы очень рекомендовал использовать cql over бережливость –
я опубликовал результаты вывода выше –