Необходима помощь для лучшей практики внедрения. Рабочая среда выглядит следующим образом:
- Файл данных журнала поступает нерегулярно.
- Размер файла данных журнала составляет от 3,9 КБ до 8,5 МБ. В среднем около 1 МБ.
- Количество записей файла данных составляет от 13 строк до 22000 строк. В среднем около 2700 строк.
- Файл данных должен быть обработан после агрегирования.
- Алгоритм последующей обработки можно изменить.
- Постобработочный файл управляется отдельно с исходным файлом данных, поскольку алгоритм пост-обработки может быть изменен.
- Выполняется ежедневная агрегация. Все файлы, обработанные после обработки, должны быть отфильтрованы по записям и агрегированию (среднее значение, max min...).
- Поскольку агрегация мелкозернистая, количество записей после агрегации не так мало. Это может быть около половины количества исходных записей.
- В какой-то момент количество файлов после обработки может составлять около 200 000.
- Файл данных должен быть удален отдельно.
В тесте я попытался обработать 160 000 обработанных после обработки файлов Spark, начиная с sc.textFile() с помощью glob-пути, с ошибкой OutOfMemory в процессе драйвера не удалось.
Какова наилучшая практика для обработки данных такого типа? Должен ли я использовать HBase вместо обычных файлов для сохранения данных после обработки?