2

私はスーパーカラムファミリーを手に入れました:

Logger {
    superKey : {
        nameKey : {name1:val1, name2:val2, ..., name8945:val8945}
    }
}

コードは次のとおりです。

    ThriftSuperCfTemplate<String, String, String> stringKeyTemplate = 
            new ThriftSuperCfTemplate<String, String, String>
            (keyspace, LOGGER_COLUMN_FAMILY, 
            StringSerializer.get(), StringSerializer.get(), 
            StringSerializer.get());

    int count = stringKeyTemplate.countSubColumns(NAME_KEY, SUPER_KEY); //1

    SuperCfResult<String, String, String> nameRow = 
            stringKeyTemplate.querySuperColumn(NAME_KEY, SUPER_KEY);

    Collection<String> names =  nameRow.getColumnNames(); //2

    Assert.assertTrue(names.size()==count); //3

私がやろうとしているのは、nameKey 列ファミリーからすべての列名をフェッチすることですが、最初の 7 つの名前{name1, name2,..., name7}(2 行目) のみを返しますが、count は返します8945(1 行目)。そして、アサーションは3行目で失敗します...

4

2 に答える 2

1

GH の現在のヒントではこれを再現できません: https://github.com/rantav/hector/commit/1aa93e78257e86dfc73390cb9c4db52d8ed29a69

ここでは、バージョン 1.0.1 とマスターの間で大きな変更はないと思います。トランクから最新のものに更新して、問題が「なくなる」かどうかを確認できる場合は、さらに調査します。また、実行している Cassandra のバージョンは何ですか? これは週末に発生したばかりですが、原因ではない可能性があります: https://issues.apache.org/jira/browse/CASSANDRA-3446

サーバーにエラー ログはありますか? StorageProxy のログ レベルをデバッグに設定し、送信されるすべてのものが正しく表示されるようにします (ログ レベルの調整の詳細: http://www.datastax.com/docs/1.0/configuration/logging_options )。

于 2011-11-08T20:52:55.947 に答える
0

これは、手動で生成できなかった特定のデータでのみ再現可能であることがわかりました。ただし、私の場合の回避策を見つけました。

    int count = stringKeyTemplate.countSubColumns(NAME_KEY, SUPER_KEY); //1

    SuperSliceQuery<String, String, String, String> query = 
          HFactory.createSuperSliceQuery(keyspace, StringSerializer.get(), 
          StringSerializer.get(), StringSerializer.get(), 
          StringSerializer.get());

    query.setColumnFamily(COLUMN_FAMILY);
    query.setKey(NAME_KEY);
    query.setRange(SUPER_KEY, SUPER_KEY, false, 1);

    QueryResult<SuperSlice<String, String, String>> result = query.execute();


    Collection<String> names = null;
    names = result.get().getColumnByName(SUPER_KEY).getColumns(); //2
    Assert.assertTrue(names.size()==count); //3
于 2011-11-08T09:21:51.610 に答える