2012-03-06 5 views
1

私はcassandra列ファミリにネストされた列をスーパーまたはノーマルのどちらにもできますかどうかを確認しようとしています。私はすべてを見て、私が探しているものを完全に見ていない。Cassandraの列ファミリ内にサブ列を作成

私はこのようなことをしたいと思っています。次のポストCreate a Cassandra schema for a super column with metadata

から

`[{ 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コードからそれを取り出し、ハッシュはそれが空であると私に伝えます。

私はこれが可能であるかどうか、サブファミリーをカラムファミリーに追加する最良の方法が何ではないかと思います。あるいは、間違った木を吠えるだけです。

すべての情報をいただければ幸いです。

答えて

2

通常の列とスーパー列を混在させようとしています。 Cassandraでは、列ファミリのすべての列が通常の列またはスーパー列のいずれかであることが必要です。使用して1列にaddress_streetaddress_stateaddress_zip

  • ストアアドレスのコンポーネント:3列に自宅の住所欄まで

    • スプリット:代わりにスーパー列を使用しようとしているのは、次のいずれかを行うことができますあなたの好きなシリアル化形式(json、プロトコルバッファなど)
  • +0

    ありがとうございました。 JSONのアイデアが住所情報として気に入っています。私はそのショットを与えるだろう。 –

    関連する問題