0

別のキースペースにインポートするために使用できる Cassandra キースペースのスキーマをダンプしようとしています。たとえば、cassandra キースペースをバックアップして、同じスキーマを持つ別のキースペースに復元します。

私はcqlshを使用しています:

[cqlsh 2.3.0 | Cassandra 1.2.2 | CQL spec 3.0.1 | Thrift protocol 19.35.0]

最初に、CLUSTERING ORDER タイムスタンプ DESCENDING 順序でスキーマを作成します。

DROP KEYSPACE mailbox;

CREATE KEYSPACE mailbox 
    WITH REPLICATION  = { 'class': 'SimpleStrategy', 'replication_factor': '1' };

USE mailbox;

CREATE TABLE messages (
    id uuid,
    user_id uuid,
    contents varchar,
    created timestamp,

    PRIMARY KEY (id, created)
)
WITH CLUSTERING ORDER BY (created DESC);

次に、CQL 関数を使用して、有効な CQL3 と思われるものをダンプします。

cqlsh:mailbox> describe keyspace mailbox;

CREATE KEYSPACE mailbox WITH replication = {
  'class': 'SimpleStrategy',
  'replication_factor': '1'
};

USE mailbox;

CREATE TABLE messages (
  id uuid,
  created 'org.apache.cassandra.db.marshal.ReversedType'<timestamp>,
  contents text,
  user_id uuid,
  PRIMARY KEY (id, created)
) WITH
  bloom_filter_fp_chance=0.010000 AND
  caching='KEYS_ONLY' AND
  comment='' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=864000 AND
  read_repair_chance=0.100000 AND
  replicate_on_write='true' AND
  populate_io_cache_on_flush='false' AND
  compaction={'class': 'SizeTieredCompactionStrategy'} AND
  compression={'sstable_compression': 'SnappyCompressor'};

それを cqlsh にインポートしようとすると、次のエラーが発生します。

Bad Request: line 3:56 mismatched input '<' expecting ')'
text could not be lexed at line 16, char 14

作成された列定義(もともとCLUSTERING ORDER BYで作成されたもの)の解析に失敗していると思います:

created 'org.apache.cassandra.db.marshal.ReversedType'<timestamp>

特定のキースペースのスキーマをダンプする他の方法はありますか?

4

1 に答える 1

0

うーん..この問題は cassandra 1.2.5 で解決されていると思います。あなたは cassandra 1.2.2 https://issues.apache.org/jira/browse/CASSANDRA-5528を使用しています。 Cassandra 2.0.2 では正常に動作します。

補足として、cql のバージョンにも注意してください。http://cassandra.apache.org/doc/cql3/CQL.html#バージョン管理

于 2013-12-11T16:03:55.613 に答える