1
こんにちはGridGain /のIgniteのプロ -のApacheのIgnite SqlFieldQuery BinaryObjectを保存するキャッシュの上に
私はこの仕事を得るように見えることはできません、と無駄
目標
にドキュメントや例については、ネットを精練していますはキー
入れオペレーションコード
としてUUID
で
BinaryObject
値に裏打ちされたのIgniteキャッシュ上の単純な集計クエリを実行するには
IgniteBinary binary = ignite.binary();
IgniteCache<UUID, BinaryObject> rowCache = ignite.getOrCreateCache(CACHE_NAME).withKeepBinary();
// put
final int NUM_ROW = 100000;
final int NUM_COL = 100;
for (int i = 0; i < NUM_ROW; i++) {
BinaryObjectBuilder builder = binary.builder(ROW);
for (int j = 0; j < NUM_COL; j++) {
builder.setField("col" + j, Math.random(), Double.class);
}
BinaryObject obj = builder.build();
rowCache.put(UUID.randomUUID(), obj);
}
読むオペレーションコード
IgniteCache<UUID, BinaryObject> cache = ignite.cache(CACHE_NAME).withKeepBinary();
final SqlFieldsQuery sqlFieldsQuery = new SqlFieldsQuery("SELECT COUNT(col1)" + cache.getName());
FieldsQueryCursor<List<?>> result = cache.query(sqlFieldsQuery);
エラー
org.h2.jdbc.JdbcSQLException: Column "COL1" not found; SQL statement
EDIT
私は以来、問題は
final QueryEntity queryEntity = new QueryEntity();
queryEntity.setTableName(CACHE_NAME);
queryEntity.setKeyFieldName("key");
queryEntity.setKeyType(String.class.getName());
queryEntity.setValueType(Row.class.getName());
LinkedHashMap<String, String> fields = new LinkedHashMap<>();
fields.put("key", String.class.getName());
for (int i = 0; i < 55; i++) {
fields.put("col" + i, Double.class.getName());
}
queryEntity.setFields(fields);
return queryEntity;
を消えるように、キャッシュ構成に
QueryEntity
を追加しました
しかし、QueryEntity
のsetValueType
とsetValueFieldName
はどうなるのですか?マイ値の型は、任意のキーを持つ任意のバイナリオブジェクトである値型として
fields.put(<colName>, <colType>);
経由でこれらを宣言したいと思い
...
私はPOJOを使用して動作するようにすべてを取得することができる午前ではなくBinaryObject
値
私が間違っていることはありますか?