我正在使用Cassandra 0.8.0。
我无法弄清楚如何使用Cassandra-Cli为当前存在的SuperColumn添加值。例如:我已将以下内容添加到我的密钥空间
create column family authors
with comparator = UTF8Type and subcomparator = UTF8Type
and default_validation_class = UTF8Type
and column_metadata = [{
column_name: tags, validation_class: UTF8Type},
{column_name: url, validation_class:UTF8Type},
{column_name: title, validation_class: UTF8Type},
{column_name: publisher, validation_class: UTF8Type},
{column_name: email, validation_class: UTF8Type}];
我尝试在这个超级列中添加一行:
(输入)[default@testspace] set authors[1]['1']['url'] = 'www.henry.com';
(输出)[default@testspace] null
这是一个错误^
我也试过这个:
[default@testspace] set authors['henry']['url']['1'] = 'www.henry.com';
并获得:
org.apache.cassandra.db.marshal.MarshalException: cannot parse 'henry' as hex bytes
在Cassandra-Cli中操作SuperColumns的正确语法是什么?您能否提供一个使用cassandra-cli中的超级列设置/获取值的示例?
谢谢
答案 0 :(得分:6)
您需要添加
column_type = 'Super' and key_validation_class = UTF8Type
到您的列族定义。
答案 1 :(得分:0)
您无法在超级列的子列上创建二级索引。因此,超级列的使用最适合于子列数相对较少的用例。