Вставить строку на клавиатуре в Apache Cassandra + Hector + Java

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

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

 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();

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

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)

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

Кто-то может сказать мне, что возможно неправильно?

Заранее спасибо

Ответ 1

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

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