Данный spark-compose поможет создать мини datalake-cluster, в котором мы можем запустить даг airflow.
В демонстрационном даге находится SparkSubmitOperator, запускающий spark-job, который читает таблицу из бд postgres, и сохраняет её в hive-таблицу.
Скачиваем проект и разархивируем его в удобную вам папку. У меня, этой папкой будет:
C:\Users\danel\Downloads\mini_cluster_datalake-master
В командной строке от имени администратора устанавливаем папку с образами как текущую:
cd C:\Users\danel\Downloads\mini_cluster_datalake-master\mini_cluster_datalake
Строим и поднимаем контейнеры:
docker build -t hadoop-base docker/hadoop/hadoop-base && docker build -t hive-base docker/hive/hive-base && docker build -t spark-base docker/spark/spark-base && docker-compose up -d --build
Подождите около 2-3 минут, пока все контейнеры найдут друг друга, и в файле:
C:\Users\danel\Downloads\mini_cluster_datalake-master\mini_cluster_datalake\mnt\hadoop\namenode\start-namenode.sh
закомментируйте следующие строки:
Сохраните файл, и перезапустите контейнер namenode
Переходим к ui pgadmin:
И указываем логин:
admin@admin.com
и пароль:
root
Нам необходимо импортировать бд. Создаём подключение:
Имя/адрес сервера: postgres
Порт: 5432
Служебная база данных: postgres
Имя пользователя: airflow
Пароль: airflow
Создаём базу данных с названием spotify:
Создаём таблицу charts, и производим import готовой. Переходим к запроснику:
И запускаем запрос создания таблицы:
(
id bigint,
country text COLLATE pg_catalog."default",
date timestamp without time zone,
"position" bigint,
uri text COLLATE pg_catalog."default",
track text COLLATE pg_catalog."default",
title text COLLATE pg_catalog."default",
artist text COLLATE pg_catalog."default"
)
Нажмите правой кнопкой на пункт Таблицы, затем Обновить, чтобы наша таблица появилась. Выполняем import таблицы (файл spotify в корне проекта).
Мы только что загрузили файл в Storage Manager. Теперь выберем его для import’а. Формат выбираем binary:
Нажимаем OK. Дожидаемся копирования:
И выполним запрос в запроснике, чтобы убедиться, что данные появились:
Источник готов.
Переходим в ui:
Указываем логин: admin@airflow.com
И пароль: airflow
Нас сразу будет ожидать демонстрационный даг charts_load:
Но осталось сконфигурировать connection spark_default для SparkSubmitOperator’а.
Переходим к Admin -> Connections:
Находим spark_default и устанавливаем:
host: spark://spark-master
port: 7077
Сохраняем (Save) и теперь можем запустить даг charts_load
После завершения работы дага, можем проверить, что данные из источника, сохранились в hive.
Переходим в hue, вводим логин: hue
и пароль: Hue
и нажимаем на Create Account
Выполняем запрос SELECT * FROM test_repl_spotify.charts limit 3;
в hive:
Посмотрим .parquet файлы таблицы, через File Browser в hue:
http://localhost:32762/hue/filebrowser/view=/user/hive/warehouse/test_repl_spotify.db#/user/hive/warehouse/test_repl_spotify.db/charts
После работы, можно завершить все контейнеры:
И таким же образом можно запустить.