我是Esper的新手,我正在開發Storm-Esper協作。通過我的主類,我向包含esper的螺栓發送查詢,同時esper-bolt發送元組包含結果到打印機bolt.My的問題是,儘管查詢的結果是正確的值,屬性值不是在正確的順序。例如,我有一個查詢,從試點的表中選擇屬性:姓名,航空公司和我應該有相同的順序的結果。但是我得到:姓名,航空公司,姓氏。我已經嘗試了所有關於小組的命令。我認爲創建事件的時候它必定是埃斯珀的錯包含屬性值的地圖。我將主要類代碼和esper螺栓代碼粘貼到地圖處理的地方。任何想法爲什麼發生這種情況都是非常值得的!查詢結果中Esper-Wrong屬性序列
**mainclass**
.addStatements(("insert into pilotStream " +
"select * " +
"from Log.win:time(120 second) A "))
.addStatements(("insert into employeeStream " +
"select * " +
"from Emp.win:time(120 second) A "))
.addStatements(("insert into CombinedEvent "+
"select tick.pilotName as p_name , " +
"tick.pilotSurname as p_surname , " +
"tick.airline as p_airline " +
"from pilotStream.win:time(120 second) as tick, " +
"employeeStream.win:time(120 second) as rom "+
"where tick.airline = rom.employeeAirline "+
))
**espebolt**
Map<String, Object> emap = (Map<String, Object>) newEvent.getUnderlying();
String Event_name = newEvent.getEventType().getName();
//System.out.println(Event_name);
for (Map.Entry<String, Object> entry : emap.entrySet()) {
// String key = entry.getKey();
String val = String.valueOf(entry.getValue()) ;
//System.out.println(key+" :"+val);
//System.out.println(val);
values.add(val);
}
collector.emit(Event_name, toTuple(newEvent, values, false));
values.removeAll(values);
結果應該是:源:艾斯波-打印:2,流:CombinedEvent,ID:{},[約翰,雪,漢莎] 相反,我得到:源:艾斯波-打印:2,流:CombinedEvent,ID:{},[約翰,漢莎,雪景]
PSThe toTuple功能只需通過值獲取屬性值列表串,並將它們放入其中被髮射到printerbolt元組。在espebolt代碼中有一些評論中的打印,這幫助我看到問題出現在內部創建的地圖上。