Итак, у вас на HDFS есть набор файлов в формате Parquet, имеющих следующую структуру:
session_id
timestamp
location (последняя часть поля)
Каждый файл — это данные за один день сбора логов. Эти файлы создаются автоматически каждый день при помощи планировщика.
Теперь мы из этих предобработанных файлов будем делать небольшую аналитику, используя Apache Spark, ClickHouse и Superset.
Указанные инструменты, за исключением КликХауса, уже есть в HDP. Но может так получится, что с этими версиями не будет всё запускаться. В этот раз установка новых версий будет уже тоже частью вашей самостоятельной работы (хотя по установке новой версии Spark можете обратиться в Gist, указанный в ссылках ниже).
В конце каждого дня вам нужно запустить спарковскую джобу, которая будет:
- Подгружать parquet-файл за текущий день.
- Брать остаток вашего
location
и разбивать его на отдельные слова. - Делать вордкаунт (подсчитывать количество возникновений того или иного слова в файле) с учетом стоп-слов (какой набор из стоп-слов выбрать — на ваше усмотрение).
- Сохранять топ-20 слов за день в ClickHouse.
В конце недели построить визуализацию в Superset того, что происходило за неделю (способ визуализации выберите сами).
На этом ваш batch-пайплайн будет завершен. Вы прошли все этапы от сбора кликов с сайта до создания визуализации в BI-инструменте. Поздравляем!
- Установите jupyter notebook в вашем virtual env:
$ source venv/venv/bin/activate
$ pip install notebook
$ jupyter notebook --generate-config
-
Замените в файле
~/..jupyter/jupyter_notebook_config.py
параметрc.NotebookApp.ip
сlocalhost
на0.0.0.0
, предварительно раскомментив его. -
Поставьте докер, если он ещё не установлен
$ sudo apt install docker.io $ sudo usermod -a -G docker $USER
ClickHouse можно установить на Linux (подробно про установку написано в документации https://clickhouse.yandex/).
На Windows или Mac можно запустить ClickHouse под Docker'ом: первая команда поднимает clickhouse-server на порту 8123, а вторая - позволяет подключиться к консольному ClickHouse клиенту.
docker run -d --name clickhouse-server --publish=8123:8123 --publish=9000:9000 yandex/clickhouse-serverdocker run -it --rm --link clickhouse-server:9000 yandex/clickhouse-client --host clickhouse-server
- Документация Spark
- Gist с параметрами конфигурации Spark, использовавшихся при конфигурировании кластеров на наших программах
- Документация ClickHouse
- Документация Superset
Проверка будет осуществляться из личного кабинета. Чекер будет подключаться через HTTP-интерфейс кликхауса на порту 8123.
- Название БД -
dataengineer
- Название таблицы -
ваш логин
(например - de.ilya.markin) - Названия полей -
date, word, count
(укладываем сортированными по количеству в рамках каждого дня)