【问题标题】:insert row on keyspace in Apache Cassandra + Hector + Java在 Apache Cassandra + Hector + Java 的键空间上插入行
【发布时间】:2012-02-28 10:12:32
【问题描述】:

我正在研究使用 Java 和 Hector 的 Apache Cassandra 0.7.6 版,我尝试创建一个集群、一个键空间并在创建的这个键空间中插入一列。

通过看例子,我了解到keyspace相当于SQL数据库中的数据库,Column Family相当于表。知道这一点后,我尝试创建我的简单示例结构。

 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)

但我已经创建了“教程”键空间,并在 mutator 中使用。

【问题讨论】:

    标签: java nosql cassandra hector


    【解决方案1】:

    HFactory 中的 createKeyspace() 调用旨在创建一个 hector Keyspace 对象以供本地使用,但它实际上并没有在 Cassandra 中创建一个键空间。为此,您想在实际集群对象上使用“addKeyspace()”和“addColumnFamily”方法。

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

    【讨论】:

      猜你喜欢
      • 2012-03-04
      • 2012-08-03
      • 2013-08-27
      • 2014-07-24
      • 2015-03-15
      • 2013-05-25
      • 2012-08-04
      • 1970-01-01
      • 2011-11-15
      相关资源
      最近更新 更多