TL; DR Какова наилучшая практика в отношении определения максимальной скорости входящих данных, которую может обрабатывать конвейер данных Apache Spark?
Я написал два конвейера Apache Spark для потоковой передачи данных (один с использованием структурированной потоковой передачи, а другой с использованием потоковой передачи). Трубопроводы получают потоковые данные из сокетного соединения. Для локального тестирования я передаю файл на сервер ncat двумя способами:
- Я передаю файл построчно с небольшой задержкой между строками.
- Я передаю весь файл примерно из 5000 точек данных одновременно.
Эти два потоковых подхода (один быстрый и один немного медленнее) дают очень разные результаты как для потокового, так и для структурированного потокового конвейеров. Отложенный построчный поток (1) позволяет конвейерам полностью обрабатывать всю информацию, в то время как дамп (2) приводит к обработке только части точек данных (при этом значительная часть данных полностью теряется).
Похоже, это указывает на то, что у обоих конвейеров есть проблемы, которые "идут в ногу" со скоростью полного дампа файла (2), и что результаты конвейера имеют отношение к скорости входящих данных. Очевидно, я хотел бы быть как можно ближе к этой максимальной скорости, не переходя.
У меня вопрос: как найти максимальную скорость обработки данных при настройке конвейера Apache Structured Streaming / Apache Streaming?