Я установил небольшой кластер EMR с установленным Hive / Presto, я хочу запрашивать файлы на S3 и импортировать их в Postgres на RDS.
Чтобы выполнить запросы на S3 и сохранить результаты в таблице в postgres, я сделал следующее:
- Запустил 3-узловой кластер EMR из консоли AWS.
- Вручную SSH в главный узел, чтобы создать ВНЕШНЮЮ таблицу в кусте, глядя на корзину S3.
Вручную SSH в каждый из 3 узлов и добавьте новый файл каталога:
/etc/presto/conf.dist/catalog/postgres.properties
со следующим содержанием
connector.name=postgresql connection-url=jdbc:postgresql://ip-to-postgres:5432/database connection-user=<user> connection-password=<pass>
и отредактировал этот файл
/etc/presto/conf.dist/config.properties
добавление
datasources=postgresql,hive
Перезапустите presto, выполнив следующие действия вручную на всех 3 узлах
sudo restart presto-server
Кажется, эта установка работает хорошо.
В моем приложении несколько баз данных создаются динамически. Кажется, что эти изменения конфигурации / каталога необходимо внести для каждой базы данных, и необходимо перезапустить сервер, чтобы увидеть новые изменения конфигурации.
Есть ли подходящий способ для моего приложения (с использованием boto или других методов) обновлять конфигурации с помощью
- Добавление нового файла каталога во все узлы /etc/presto/conf.dist/catalog/ для каждой новой базы данных
- Добавление новой записи во все узлы в /etc/presto/conf.dist/config.properties
- Изящный перезапуск presto для всего кластера (в идеале, когда он переходит в режим ожидания, но это не является серьезной проблемой.