вставить строку в пространство ключей в Apache Cassandra + Hector + Java - PullRequest
12 голосов
/ 07 февраля 2012

Я изучаю Apache Cassandra версии 0.7.6 с Java и Hector, и я попытался создать кластер, пространство ключей и вставить столбец в это созданное пространство ключей.

Посмотрев примеры, я понял, что пространство ключей эквивалентно базе данных в базах данных SQL, а семейство столбцов эквивалентно таблицам. Зная это, я попытался создать свою простую примерную структуру.

 Cluster tutorialCluster = HFactory.getOrCreateCluster("TutorialCluster","127.0.0.1:9160");
 ConfigurableConsistencyLevel ccl = new ConfigurableConsistencyLevel();

 ccl.setDefaultReadConsistencyLevel(HConsistencyLevel.ONE);

 Keyspace tutorialKeyspace = HFactory.createKeyspace("Tutorial", tutorialCluster, ccl);
 Mutator<String> mutator = HFactory.createMutator(tutorialKeyspace, stringSerializer);

 mutator.addInsertion("CA Burlingame", "StateCity", HFactory.createColumn(650L, "37.57x122.34", longSerializer, stringSerializer));

 MutationResult mr = mutator.execute();

Но когда я попытался запустить это с запущенной кассандрой, но она возвращает исключение.

Exception in thread "main" me.prettyprint.hector.api.exceptions.HInvalidRequestException: InvalidRequestException(why:Keyspace Tutorial does not exist)
at me.prettyprint.cassandra.connection.HThriftClient.getCassandra(HThriftClient.java:70)
at me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:226)

Но я уже создал пространство клавиш "Учебное пособие" и использовал его в мутаторе.

1 Ответ

6 голосов
/ 07 февраля 2012

Вызов createKeyspace () в HFactory предназначен для создания объекта Hector Keyspace для локального использования, но на самом деле он не создает пространство ключей в Cassandra.Для этого вы хотите использовать методы addKeyspace () и addColumnFamily для фактического объекта кластера.

https://github.com/rantav/hector/blob/master/core/src/main/java/me/prettyprint/hector/api/Cluster.java#L117

...