Execute SQL on Ignite Cache von BinaryObjects

Ich erstelle einen Cache von BinaryObject aus einem Funken eines Datenrahmens und möchte dann SQL für diesen Cache ausführen.

Hier ist mein Code wobank ist der Datenrahmen, der drei Felder enthält (ID, Name und Alter):

    val ic = new IgniteContext(sc, () => new IgniteConfiguration()) 
    val cacheConfig = new CacheConfiguration[BinaryObject, BinaryObject]()
    cacheConfig.setName("test123")
    cacheConfig.setStoreKeepBinary(true)
    cacheConfig.setIndexedTypes(classOf[BinaryObject], classOf[BinaryObject])

    val qe = new QueryEntity()
    qe.setKeyType(TestKey)
    qe.setValueType(TestValue)
    val fields = new java.util.LinkedHashMap[String, String]()
    fields.put("id", "java.lang.Long")
    fields.put("name", "java.lang.String")
    fields.put("age", "java.lang.Int")
    qe.setFields(fields)
    val qes = new java.util.ArrayList[QueryEntity]()
    qes.add(qe)

    cacheConfig.setQueryEntities(qes)

    val cache = ic.fromCache[BinaryObject, BinaryObject](cacheConfig)

    cache.savePairs(bank.rdd, (row: Bank, iContext: IgniteContext) => {
        val keyBuilder = iContext.ignite().binary().builder("TestKey");
        keyBuilder.setField("id", row.id);
        val key = keyBuilder.build();

        val valueBuilder = iContext.ignite().binary().builder("TestValue");
        valueBuilder.setField("name", row.name);
        valueBuilder.setField("age", row.age);
        val value = valueBuilder.build();
        (key, value);        
    }, true)

Jetzt versuche ich eine SQL-Abfrage wie folgt auszuführen:

cache.sql("select age from TestValue")

Was mit folgender Ausnahme fehlschlägt:

Caused by: org.h2.jdbc.JdbcSQLException: Column "AGE" not found; SQL statement:
select age from TestValue [42122-191]
  at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
  at org.h2.message.DbException.get(DbException.java:179)
  at org.h2.message.DbException.get(DbException.java:155)
  at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:147)
  at org.h2.command.dml.Select.prepare(Select.java:852) 

Was mache ich hier falsch?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage