Как обработать большой массив JSON с помощью Apache Camel

Было бы хорошо, если бы мы все знали, какой номер строки кода вызвал исключение.

Я подозреваю, что причиной вашей первой строки является код. Объектная ячейка может быть нулевой, а нулевой адрес не может быть преобразован в тип String. Вы можете проверить по коду.

Примечание. Хорошо, что код работает с Office 2010, но я думаю, что этот тип проблемы может произойти в любой версии Excel.

3
задан A5300 17 January 2019 в 15:37
поделиться

2 ответа

Я получил следующее решение:

.split(body().tokenize("\n", 1_000, false))
.streaming()
.process(exchange -> {
    String[] body = exchange.getIn().getBody(String.class).split("\n");
    var records = new ArrayList<FooBar>(body.length);
    for(String line: body) {
         records.add(objectMapper.readValue(line, FooBar.class));
    }
    exchange.getIn().setBody(records);
})

objectMapper - com.fasterxml.jackson.databind.ObjectMapper

Например, файл размером 3,5 ГБ был обработан за ~ 1,2 мин.

0
ответ дан A5300 17 January 2019 в 15:37
поделиться

Вы можете использовать jsonpath для разделения сообщений JSon (и включения потоковой передачи для больших сообщений в Splitter EIP)

https://github.com/apache/camel/blob/master/components/ верблюд-jsonpath / SRC / Основной / документы / jsonpath-language.adoc

0
ответ дан Claus Ibsen 17 January 2019 в 15:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: