7

私はカサンドラとヘクターの初心者です。

hectorを使用してCassandraの行のすべての列を取得したいと思います。Webで調べた後、いくつかのサンプルコードを取得しましたが、範囲または列名が必要です。

SliceQuery<String,String,String> query = HFactory.createSliceQuery(keyspace, ss, ss, ss);
    query.setColumnFamily("MyColumnFamily").setKey("S001").setRange(null, null, false, 100);
    QueryResult<ColumnSlice<String,String>> result = query.execute();
    for (HColumn<String, String> column : result.get().getColumns()) {
        System.out.println(column.getName() +"::"+ column.getValue());
    }

ここでは、この範囲の列を取得するsetRange()メソッドで範囲を設定する必要があります。このメソッドで開始と終了を設定することもできますが、これにより特定の範囲の列も提供されます。範囲を設定していない場合は、列名を配列として指定する必要があります。

特定の行のすべての列を取得する方法はありますか?範囲や列の名前は設定せず、行のすべての列が必要です。私のアプリケーションでは列が事前定義されていないためです。

または、setRange()メソッドで設定できるように、行の合計列数を取得する方法はありますか?

ありがとう。

4

1 に答える 1

10

やや小さい行に対してこれを行う方法は、貼り付けた例で使用されている方法とまったく同じようにsetRange()メソッドを使用することです。範囲の開始パラメーターと終了パラメーターをnullに設定すると、フェッチ元の範囲は行全体になります。

その時点で考慮する必要があるのは制限だけです。貼り付けた例では、制限が100に設定されているため、クエリは100を超える列を返しません。行内のすべての列を常に取得する場合は、制限を非常に大きな数(可能な列数よりも多い数)に設定できますが、これは一般的にはお勧めできません。

代わりに、範囲クエリ用にhector ColumnSliceIteratorを作成することをお勧めします。これにより、行のイテレータインターフェイスが提供され、一度に多くの列をクエリすることなく行全体を反復処理できます。このページの下部にある「列の反復」の例を参照してください。

https://github.com/rantav/hector/wiki/Getting-started-%285-minutes%29

于 2012-04-11T20:43:39.490 に答える