2012-01-06 14 views
0

私は、行キー1-nのスキーマを持っています。各行には、「名前」のTimeUUIDを持つ可変数のスーパーカラムがあります。私はこのデータを時間範囲で照会できるようにしたいと考えています。カッサンドラ:TimeUUIDスーパーカラムのget_range_slices?

2つの問題が出ている:

をKEYRANGEに - >私は「start_key」と「end_key」の中に入れた値はスリフトで(より良い用語の欠如のために)誤解を取得しています。さまざまな価値観を試してみて私が期待しているものを見ず、まったく予期せぬものを返すことが多い。

例:私の行キーは1〜1000の範囲でランダムなギャップが多数あります。私はstart_key = 50とend_key = 20 ..を入れて、99から414の範囲のキーで行を返します。

例:私はkey = 13の既知の行を持っています。この値をstart_keyとend_keyに入れても、結果。

第2の問題:結果が得られたとしても、 'keyslice'の 'columns'部分は常に空です。私はcassandra-cli経由でチェックして、データがあることを知っています。

my $slice_range = new Cassandra::SliceRange(); 
$slice_range->{ start } = create_UUID(UUID::Tiny::UUID_TIME, "2010-12-24 00:00:00"); 
$slice_range->{ finish } = create_UUID(UUID::Tiny::UUID_TIME, "2011-12-25 00:00:00"); 

my $slice_predicate = new Cassandra::SlicePredicate(); 
$slice_predicate->{ slice_range } = $slice_range; 

my $key_range = new Cassandra::KeyRange(); 
$key_range->{ start_key } = 13; 
$key_range->{ end_key } = 13; 

my $result = $client->get_range_slices($column_parent, $slice_predicate, $key_range, $consistency_level); 

print Dumper($result); 

明らかにイムの誤解いくつかの基本的な教訓を次のようにImはPerlを使用して

EDIT:使用しているPerlライブラリImが適切に文書化されていないことが判明しました。 UUIDの作成は、宣伝されたとおりには機能しませんでした。私はそれを開いて固定しました。そして今、私が期待していたように、すべてがもう少し進んでいます。私はスーパーカラムを日付/時間範囲でスライスすることができます。キーレンジ部分を機能させることに取り組んでいます。

+0

あなたはどのパーティションを使用していますか? RandomPartitionerを使用している場合、行キースライスを実行することはできません。 – psanford

+0

ああああ。 RPの問題は、結果がソートされないと思った。それはまったくうまくいかないというわけではありません。 – ethrbunny

+0

実際には、私は各スライスに1つの行キーを使用しています。その列のキーは、範囲がスライスされています...または期待しています。 – ethrbunny

答えて

1

http://wiki.apache.org/cassandra/FAQ#range_rpは、キーレンジで期待することができない理由をカバーしています。

選択しようとしている範囲の実際の範囲を含むSlicePredicateを指定する必要があります。デフォルトのno column_namesとslice_rangeは、表示される空の列リストになります。

関連する問題