Чтение событий из CSV в Esper - PullRequest
       38

Чтение событий из CSV в Esper

0 голосов
/ 30 сентября 2018

Я пытаюсь прочитать пару событий из CSV с помощью CSVInputAdapter, но не могу этого достичь, вот что я пытаюсь:

Сначала я выполнил первые шагидокументация http://esper.espertech.com/release-7.1.0/esper-reference/html_single/index.html#gettingstarted

Я определил событие Person следующим образом:

public class PersonEvent {
    private String name;
    private int age;

    public PersonEvent() {
        this.name = "NONE";
        this.age = -1;
    }

    public PersonEvent(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

Затем создайте экземпляр службы, добавьте тип события и создайте оператор и прослушиватель, так что каждый раз PersonEventПолучается, что печатает имя и возраст человека:

EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider();
engine.getEPAdministrator().getConfiguration().addEventType(PersonEvent.class);
String epl = "select name, age from PersonEvent";
EPStatement statement = engine.getEPAdministrator().createEPL(epl);

statement.addListener((newData, oldData) -> {
            String name = (String) newData[0].get("name");
            int age = (int) newData[0].get("age");
            System.out.println(String.format("Name: %s, Age: %d", name, age));
        });

Я проверил это, отправив простое событие, и оно работает

engine.getEPRuntime().sendEvent(new PersonEvent("Peter", 10));

Это вывод

Name: Peter, Age: 10

Проблема возникает, когда я пытаюсь прочитать события из файла CSV, мой CSV выглядит следующим образом:

name,age
John,3
Anne,4

Вот как я читаю файл:

    AdapterInputSource source = new AdapterInputSource(new File("/path/input.csv"));
    (new CSVInputAdapter(engine, source, "PersonEvent")).start();

И это вывод, который я получаю:

Name: Peter, Age: 10
Name: NONE, Age: -1
Name: NONE, Age: -1

Как вы можете видеть, я получаю информацию о Питере, обработанную отправкой простого события, и две строки CSV, что в порядке, но безданные.Не могли бы вы помочь мне, если я что-то не так делаю?Большое спасибо.

1 Ответ

0 голосов
/ 01 октября 2018

Это может быть потому, что в классе нет сеттеров?Возможно, это связано с тем, что у JVM нет определенного порядка для методов в классах Java.Первым свойством может быть «возраст», а не «имя».Попробуйте также указать порядок полей.Ведение журнала уровня отладки также может вам помочь.

...