在Cassandra中的柱族内创建子柱

在Cassandra中的柱族内创建子柱,cassandra,super-columns,Cassandra,Super Columns,我一直在尝试,看看是否可以在cassandra列族中嵌套超级列或普通列。我已经到处找了,还没有完全看到我要找的东西 我想做这样的事情 `[{ firstname: "Me", lastname: "Smith", HomeAddress: { Street: "1234 Any Place Dr" ,State: "IL" ,zip: "62024" }

我一直在尝试,看看是否可以在cassandra列族中嵌套超级列或普通列。我已经到处找了,还没有完全看到我要找的东西

我想做这样的事情

 `[{ firstname: "Me", 
     lastname: "Smith",
     HomeAddress: { Street: "1234 Any Place Dr"
                    ,State: "IL"
                    ,zip:  "62024"
                  }
  }]`
从以下职位

我发现了一些类似的东西,但它没有按照我想要的方式工作

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
=>(列=FavStore,值=59580595188280,时间戳=1330696438)
=>(列=收藏夹,值=散列(0x3618bc0),时间戳=1330696438)
=>(列=FirstName,值=Me,时间戳=1330696438)
=>(列=家庭地址,值=散列(0x3618b30),时间戳=1330696438)
=>(column=LastName,value=Smith,timestamp=1330696438)

当我尝试从家庭地址中提取值时,我什么也得不到。它似乎是空的。我从一些perl代码中提取它,散列告诉我它是空的

我想知道这是否可能,如果不是,那么向柱族添加子柱的最佳方法是什么。还是我找错了方向


任何信息都将不胜感激。

您正在尝试混合普通列和超级列。Cassandra要求列族中的所有列都是普通列或超级列。您可以执行以下操作之一,而不是尝试使用超级列:

  • 将“家庭地址”列拆分为3列:
    address\u street
    address\u state
    address\u zip
  • 使用您喜欢的序列化格式(json、协议缓冲区等)将地址的组件存储在一列中

谢谢您提供的信息。我喜欢JSON作为地址信息的想法。我要试一试。