web-dev-qa-db-ja.com

Cassandra 2.1.8の非フリーズコレクションとユーザー定義タイプ

次の例を ここ から実行しようとしています

  CREATE TYPE address (
          street text,
          city text,
          Zip int
      );

 CREATE TABLE user_profiles (
      login text PRIMARY KEY,
      first_name text,
      last_name text,
      email text,
      addresses map<text, address>
  );

ただし、user_profilesテーブルを作成しようとすると、次のエラーが発生します。

InvalidRequest: code=2200 [Invalid query] message="Non-frozen collections are not
allowed inside collections: map<text, address>

なぜこれが起こる可能性があるのか​​について何か考えはありますか?

16
userNotFound

2.1.8を実行していますが、同じエラーメッセージが表示されます。これを修正するには、frozenキーワードが必要です。

 CREATE TABLE user_profiles (
      login text PRIMARY KEY,
      first_name text,
      last_name text,
      email text,
      addresses map<text, frozen <address>>
  );

Frozen UDTは(今のところ)単一の値にシリアル化されるため、必要です。あなたが従うべき同様のより良い例は ユーザー定義型のドキュメント の例かもしれません。それを試してみてください。

17
Aaron

cassandraマップで、テキスト」ではなく「文字列」を誤って使用したときに、このメッセージが表示されました。

mymap map<bigint, string> 

私はグーグルからこのstackoverflowスレッドに従いました、そして私はこの情報が誰かに彼らの時間を数分節約することができると思いました。

10
Soid

冷凍されていないUDTはまだサポートされていません。 UDTごとにこのキーワードを明示的に指定するようにユーザーに求める理由は、既存のコードを壊すことなく、3.xに 可変UDT を導入できるようにするためです。

8