Работа с большими объемами данных обычно утомительна и требует множества оптимизаций. Сегодня мы покажем, что это не всегда так, и как Aero может помочь вам в достижении целей обработки данных.

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

В этой серии сообщений в блогах, демонстрирующих Aero, мы создаем конвейер загрузки для набора данных GDELT, который содержит данные об опубликованных новостных статьях почти из всех стран мира. Сегодня мы продвинемся дальше в этом путешествии, отфильтровав несколько больших наборов данных, чтобы проанализировать, как средний тон новостных статей о COVID-19 изменился с течением времени.

В нашем предыдущем посте были рассмотрены основы настройки нашей среды, установки необходимых инструментов и начала работы. Во второй части нашего руководства мы будем масштабироваться для использования больших наборов данных GDELT (https://www.gdeltproject.org/).

Ссылку на Часть 1 можно найти здесь.

Резюме

Давайте быстро вернемся к части 1. Мы создали поток для извлечения одного файла из GDELT и сохранения его на платформе Aero, что позволяет нам получить результаты позже. Мы достигли этого без создания какой-либо инфраструктуры.

Подними меня (в Облако)

До сих пор мы выполняли усреднение по одному файлу — пора масштабироваться! Чтобы упростить работу с этим руководством, мы создали дамп данных за последние 3 месяца, который можно найти здесь.

s3://user-compute-metaflows3bucket-13orx5cgclibk/covid/recent.csv.zip

Прежде чем загружать это в наш поток, давайте просто внесем несколько незначительных изменений в наш код, чтобы он мог различать дни. Это требует, чтобы мы добавили вызов groupby в функцию filter_data и изменили нашу коллекцию результатов, чтобы использовать сгруппированный набор данных вместо общего набора данных. Затем мы можем вывести результаты в виде списка дат.

Примечание. Попробуйте поиграть здесь! Вы можете отфильтровать набор данных по России, фондовому рынку или любым другим интересующим вас новостям! Расскажите нам о любых графиках, которые вы делаете, на @aeroplatform в Твиттере.

Однако у нас есть проблема: размер нашего нового набора данных составляет чуть менее 50 ГБ, и если у вас нет мощной машины, его обработка, скорее всего, невозможна. Чтобы обработать этот новый набор данных, нам нужно отправить нашу работу в облако.

Aero упрощает предоставление облачных ресурсов, изменяя нашу команду выполнения, и мы не только получаем доступ к дополнительным ресурсам, но и можем воспользоваться преимуществами молниеносной сетевой магистрали облака для максимально быстрой передачи данных между Aero. и наш рабочий процесс.

Так как же нам перейти в облако?

Нам нужно начать с изменения нашего окружения. Мы использовали локальную среду Conda, но она не подходит для удаленного развертывания, поскольку Aero не будет знать, какие библиотеки требуются. Чтобы указать это, Metaflow предоставляет удобный декоратор, аннотацию @conda_base, передавая требуемые библиотеки в качестве параметров.

Теперь давайте изменим нашу команду для использования облака, добавив требования к памяти для нашего рабочего процесса:

aero run cloud gdelt_etl.py --args="--url s3://user-compute-metaflows3bucket-13orx5cgclibk/covid/recent.csv.zip" --memory 64000 --cpu 16

Используя мощь Aero, мы только что выделили каждому шагу 64 ГБ и обработали набор данных, а затем сохранили данные обратно на платформу Aero.

Верхний совет

Не забывайте, что вы можете использовать команду возобновления в любом рабочем процессе, чтобы начать с того же шага, который ранее завершился неудачно. Это может быть очень полезно, когда вы работаете с большими наборами данных и не хотите повторно запускать дорогостоящий этап обработки.

После завершения рабочего процесса мы можем использовать следующий пример для получения результатов из Aero. Используя клиентскую библиотеку Metaflow, мы можем получить результат последнего успешного запуска — отфильтровать и отсортировать наши данные по дате и графику.

Убедитесь, что вы также установили plotly, так как это то, что мы будем использовать для создания наших графиков.

Вот и все! Никаких разрывов, никаких ошибок памяти — мы только что обработали 50 ГБ данных за считанные минуты и сохранили результаты для будущего анализа. С этого момента мы могли бы написать новые потоки, которые будут использовать эти результаты и выполнять будущий анализ, или мы могли бы использовать их в реальном времени и использовать для работы панели мониторинга. Это так просто.

У нас есть последняя часть этого руководства, в которой мы модифицируем этот процесс, чтобы он выполнялся ежедневно с использованием системы планирования в Aero. Настройтесь в следующий раз, чтобы увидеть последнюю часть головоломки!