相关疑难解决方法(0)

使用Hector在Cassandra中查询CompositeType列

这是我面临的情景样本.说我有这个列族:

    create column family CompositeTypeCF 
    with comparator = 'CompositeType(IntegerType,UTF8Type)' 
    and key_validation_class = 'UTF8Type' 
    and default_validation_class = 'UTF8Type'
Run Code Online (Sandbox Code Playgroud)

下面是一些使用Hector的示例Java代码,了解如何将一些数据插入此列族:

 Cluster cluster = HFactory.getOrCreateCluster("Test Cluster", "192.168.1.6:9160");
 Keyspace keyspaceOperator = HFactory.createKeyspace("CompositeTesting", cluster);
 Composite colKey1 = new Composite();
 colKey1.addComponent(1, IntegerSerializer.get());
 colKey1.addComponent("test1", StringSerializer.get());
 Mutator<String> mutator = HFactory.createMutator(keyspaceOperator, StringSerializer.get());
 Mutator<String> addInsertion = mutator.addInsertion("rowkey1", "CompositeTypeCF",
     HFactory.createColumn(colKey1, "Some Data", new CompositeSerializer(), StringSerializer.get()));
 mutator.execute();
Run Code Online (Sandbox Code Playgroud)

这是有效的,如果我去cassandra-cli做一个列表,我得到这个:

$ list CompositeTypeCF;

Using default limit of 100
-------------------
RowKey: rowkey1
=> (column=1:test1, value=Some Data, timestamp=1326916937547000)
Run Code Online (Sandbox Code Playgroud)

我现在的问题是:如何在Hector中查询这些数据?基本上我需要以几种方式查询它:

  1. 给我整行Row Key ="rowkey1"
  2. 给我列数据,其中列名的第一部分=某个整数值
  3. 给我列名称的第一部分在特定范围内的所有列

java cassandra hector composite-types

13
推荐指数
1
解决办法
6477
查看次数

在Cassandra中存储值列表

版本依赖

这个问题的一些答案涉及旧版Cassandra.这类问题的正确答案取决于您使用的Cassandra版本.


我有一个配置文件列系列,并希望在每个配置文件中存储技能列表.我不确定这是如何在Cassandra中完成的.一种选择是存储序列化的Thrift或protobuf,但我不想这样做,因为我认为Cassandra不了解这些格式,因此数据存储区中的数据不会通过CQL进行人类可读或可查询从命令行.我想到的另一个解决方案是使用超级列并将技能作为具有空值的键:

skills: {
  'java': '',
  'c++': '',
  'cobol': ''
}
Run Code Online (Sandbox Code Playgroud)

这是处理Cassandra列表的好方法吗?我想有一些我不知道的成语.我正在使用Astyanax客户端库,它只支持复合列而不是超级列,所以我在上面提出的解决方案在这种情况下看起来很尴尬.虽然我仍然在理解复合材料列时遇到一些麻烦,因为它们似乎尚未完全记录.这个解决方案是否适用于复合柱?

cassandra

5
推荐指数
1
解决办法
8368
查看次数

标签 统计

cassandra ×2

composite-types ×1

hector ×1

java ×1