Создайте подколонку внутри семейства столбцов в Кассандре - PullRequest
1 голос
/ 07 марта 2012

Я пытался узнать, могу ли я иметь вложенные столбцы в семействе столбцов кассандры, как супер, так и нормальные.Я просмотрел все и не полностью увидел то, что ищу.

Я хочу сделать что-то подобное.

 `[{ 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 => (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 сообщает, что он пуст,Или я просто лаю не на том дереве.

Любая информация будет принята с благодарностью.

1 Ответ

2 голосов
/ 07 марта 2012

Вы пытаетесь смешать обычные столбцы и супер столбцы.Кассандра требует, чтобы все столбцы в семействе столбцов были либо обычными столбцами, либо супер столбцами.Вместо того, чтобы использовать супер столбец, вы можете выполнить одно из следующих действий:

  • Разделить столбец домашнего адреса на 3 столбца: address_street, address_state, address_zip
  • Храните компоненты адреса в одном столбце, используя ваш любимый формат сериализации (json, буферы протокола и т. Д.)
...