2017-07-29 4 views
1

こんにちはGridGain /のIgniteのプロ -のApacheのIgnite SqlFieldQuery BinaryObjectを保存するキャッシュの上に

私はこの仕事を得るように見えることはできません、と無駄

目標

にドキュメントや例については、ネットを精練しています

はキー

入れオペレーションコード

として UUIDBinaryObject値に裏打ちされたの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を追加しました

しかし、QueryEntitysetValueTypesetValueFieldNameはどうなるのですか?マイ値の型は、任意のキーを持つ任意のバイナリオブジェクトである値型として

私は fields.put(<colName>, <colType>);経由でこれらを宣言したいと思い

...

私はPOJOを使用して動作するようにすべてを取得することができる午前

ではなくBinaryObject

私が間違っていることはありますか?

答えて

1
new SqlFieldsQuery("SELECT COUNT(col1)" + cache.getName()) 

キャッシュ名はスキーマ名であり、クラス名()はテーブル名です。あなたが間違ったテーブル名を持っているように見えます。

binary.builder(ROW)ROWQueryEntity.valueTypeに等しいことも確認してください。

関連する問題