我一直试图看看我是否可以在cassandra列族中使用超级或普通的嵌套列。我已经看了一遍,并没有完全看到我在寻找什么。
我想做这样的事情。
`[{ firstname: "Me",
lastname: "Smith",
HomeAddress: { Street: "1234 Any Place Dr"
,State: "IL"
,zip: "62024"
}
}]`
来自以下帖子Create a Cassandra schema for a super column with metadata
我发现了类似的东西,但它没有按照我想要的方式工作。
create column family users
with comparator = UTF8Type
and compression_options = { sstable_compression:SnappyCompressor, chunk_length_kb:64}
and column_metadata = [
{ column_name: FirstName, validation_class : UTF8Type}
{ column_name: LastName, validation_class : UTF8Type},
{ column_name: FavStore, validation_class : IntegerType}
, { column_type: super, column_name: HomeAddress }
];
这是我的代码,显示了我如何创建我的列族。
它创建它但是如果我像上面的JSON示例那样放置地址它似乎不起作用。
当我从cli做一个列表时,这是我的输出。
RowKey: 646f68616c6c
=> (column=FavStore, value=59580595188280, timestamp=1330696438)
=> (column=Favorites, value=HASH(0x3618bc0), timestamp=1330696438)
=> (column=FirstName, value=Me, timestamp=1330696438)
=> (column=HomeAddress, value=HASH(0x3618b30), timestamp=1330696438)
=> (column=LastName, value=Smith, timestamp=1330696438)
当我尝试从归属地址中提取值时,我什么都没得到。看来它是空的。我从一些perl代码中删除它,Hash告诉我它是空白的。
我想知道这是否可行,如果不是将子列添加到列族的最佳方法。或者我只是在咆哮错误的树。
任何信息都将不胜感激。
答案 0 :(得分:2)
您正在尝试混合普通列和超级列。 Cassandra要求列族中的所有列都是普通列或超级列。您可以执行以下操作之一,而不是尝试使用超级列:
address_street
,address_state
,address_zip