Как стать автором
Обновить
5.5
Карма
0
Рейтинг
Владислав Лукашин @FrostNova

Пользователь

  • Подписчики
  • Подписки 5

Эффективные личные финансы. Простой способ

У Сбера есть возможность разбивать одну транзакцию через «сменить категорию» и редактирование суммы. В этом случае транзакция просто поделится на новую категорию с указанной суммой и старую с остатком. Также можно добавлять свои категории и доходы с расходами, которые были наличкой или картой другого банка.

Классификация больших объемов данных на Apache Spark с использованием произвольных моделей машинного обучения

В случае kafka в нашем случае есть один нюанс: так как у нас батчевая обработка, необходимо каким-то образом сигнализировать о границе очередного батча. Так как топики в кафке имеют определенное количество независимых партиций, то сделать это достаточно непросто.

Возможно я что-то пропустил, но Вы не рассматривали использование Spark Streaming?
Он изначально использовал Akka, потом переехал на Netty.
Как мне кажется может подойти для Вас:
  • отлично работает с Kafka, но может использовать различные источники данных(Flume, Kinesis, TCP sockets)
  • данные всегда обрабатываются батчами (задается промежуток времени между ними)
  • есть возможность использовать backpressure(spark.streaming.backpressure.enabled по-умолчанию false)

Как вариант, обработку можно разделить на две подзадачи — одна подготавливает данные и отправляет их классификатору, вторая занимается постобработкой после классификации(Spark Streaming + Kafka). Классификатор, в свою очередь, работает только с Kafka(запись и чтение).

Apache Spark или возвращение блудного пользователя

Мы используем HyperLogLog для сохранения статистики по аудиториям. Потоковый обработчик каждые 10 минут обновляет состояние аудиторий за текущий час. Пакетный обработчик сохраняет статистику за весь период. В итоге комбинируя статистику за весь период и часовую можно получить информацию по аудиториям с точностью до 10 минут. Все HyperLogLog храним в MongoDB. Остальные метрики (количество обработанных данных, время работы и т.п.) отправляются на хранение в Graphite.

Apache Spark или возвращение блудного пользователя

Смысл «лямбда архитектуры» лежит во фразе: «большие и быстрые» данные. Потоковая обработка данных отвечает за «быстрые», пакетная за «большие», а переиспользование кода я считаю частью «лямбда архитектуры», так как в обоих случаях обрабатываются одинаковые данные.
Возможно я неправильно понимаю смысл «лямбда архитектуры» и хотел бы Ваш комментарий по этому поводу.

Apache Spark или возвращение блудного пользователя

На счет количества параметров — не вижу никакой проблемы. А для объектов классов для подключаемых библиотек Вы правы — ошибки не избежать. Но кто вам мешает использовать ту самую (1.4.0 и выше) версию?

Apache Spark или возвращение блудного пользователя

1) Да, действительно, размер этой коллекции достаточно мал.
2) Для нашего потокового обработчика некритична небольшая разница в синхронизации. В любом случае пакетный обработчик перестроит все аудитории под текущее состояние условий. На счет стабильности: на драйвере иногда можно встретить OutOfMemoryError. Происходит это из-за того, что при использовании persist() или cache() на драйвере накапливается информация, которая совсем не хочет очищаться автоматически (точные причины почему это происходит мне, увы, не известны). Проблема решилась добавлением System.gc() в конце updateConditions().

Apache Spark или возвращение блудного пользователя

Возможно эта статья Вам поможет с ошибкой сериализации.

Apache Spark или возвращение блудного пользователя

Интересно, каким образом

Потоковый и пакетный обработчики используют одну и туже логику обработки событий.

Позвольте спросить: зачем Вам доступ к конфигу из воркера? Можно в драйвере конфиг посмотреть и уже через драйвер воркеры могут получить интересующий Вас параметр.

Apache Spark или возвращение блудного пользователя

В MongoDB хранятся аудиторные условия. Учитывая то, что они могут быть представлены фактически любой структурой — MongoDB как нельзя кстати.

Apache Spark или возвращение блудного пользователя

Исторически так сложилось, что MongoDB мы использовали во многих проектах. Постепенно мы уходим от ее использования, но все же для хранения сложной структуры данных она пока что незаменима. Что касается Aerospike, то тут все просто — для RTB нужен быстрый отклик с учетом обращения к DB и обработки.

Информация

В рейтинге
Не участвует
Откуда
Тамбов, Тамбовская обл., Россия
Дата рождения
Зарегистрирован
Активность