1

スーパーまたは通常のカサンドラ列ファミリーでネストされた列を使用できるかどうかを確認しようとしています。私は隅々まで見ましたが、私が探しているものを完全には見ていません。

私はこのようなことをしたいと思っています。

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

次の投稿からメタデータを含むスーパー カラムの Cassandra スキーマを作成する

似たようなものを見つけましたが、思ったように機能していません。

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)

Home Address から値を取得しようとしても、何も得られません。どうやら空っぽのようです。私はいくつかの perl コードからそれを引っ張ってきました。ハッシュはそれが空白であることを示しています。

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

どんな情報でも大歓迎です。

4

1 に答える 1

2

通常の列とスーパー列を混在させようとしています。Cassandra では、列ファミリー内のすべての列が通常の列またはスーパー列のいずれかである必要があります。スーパー カラムを使用する代わりに、次のいずれかを実行できます。

  • address_street自宅住所の列を、address_state、 の3 つの列に分割します。address_zip
  • お気に入りのシリアル化形式 (json、プロトコル バッファーなど) を使用して、アドレスのコンポーネントを 1 つの列に格納します。
于 2012-03-07T16:37:43.600 に答える