Есть ли способ автоматизировать процесс вакцинации красных смещений через UDF?

У меня более 300+ столов в красном смещении.

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

Я нашел ссылку автоматизировать с помощью Python, но не тот отличный кодер Python, я так ищу решение в сценарии SQL.

3 ответа

К сожалению, вы не можете использовать udf для чего-то подобного, udf - это простая функция ввода / вывода, предназначенная для использования в запросах.

Лучше всего использовать этот инструмент с открытым исходным кодом от AWS Labs: VaccumAnalyzeUtility. Самое замечательное в использовании этого инструмента заключается в том, что он очень умел VACUUM на столах, которые нуждаются в них, и он также будет работать ANALYZE на столах, которые в этом нуждаются.

Это довольно легко настроить как работу cron. Вот пример того, как это можно сделать:

Извлеките репозиторий amazon-redshift-utils в git:

git clone https://github.com/awslabs/amazon-redshift-utils
cd amazon-redshift-utils

Создайте скрипт, который может быть запущен cron. В вашем текстовом редакторе создайте файл с именем run_vacuum_analyze.sh с помощью следующего и заполните значения для вашей среды:

export REDSHIFT_USER=<your db user name>
export REDSHIFT_PASSWORD=<your db password>
export REDSHIFT_DB=<your db>
export REDSHIFT_HOST=<your redshift host>
export REDSHIFT_PORT=<your redshift port>
export WORKSPACE=$PWD/src/AnalyzeVacuumUtility 

#
# VIRTUALENV
#

rm -rf $WORKSPACE/ve1
virtualenv -p python2.6 "$WORKSPACE/ve1"
# enter virutalenv
source $WORKSPACE/ve1/bin/activate

#
# DEPENDENCIES
#
pip install PyGreSQL

cd $WORKSPACE/run

#
# RUN IT
#
python analyze-vacuum-schema.py  --db $REDSHIFT_DB --db-user $REDSHIFT_USER --db-pwd $REDSHIFT_PASSWORD --db-port $REDSHIFT_PORT --db-host $REDSHIFT_HOST

Затем создайте задание cron, которое будет запускать этот скрипт (в этом примере я запускаю его ежедневно в 2:30)

chmod +x run_vacuum_analyze.sh
crontab -e

Добавьте следующую запись:

30 2 * * * <path-to-the-cloned-repo>/run_vacuum_analyze.sh

Вы НЕ МОЖЕТЕ использовать UDF для этого, UDF не может выполнить команду, которая обновляет данные.

Теперь вы можете использовать автоматическую вакцину,Redshift теперь предоставляет эту возможность

Да, я создал функцию AWS lamda в java и использовал событие наблюдения за облаком для составления расписания с использованием cron. Функция AWS lamda в java ожидает загрузки затененного jar-файла. Я создал переменную окружения в функции lamda для свойств соединения красного смещения, которые передаются в обработчик Java.

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

https://thedataguy.in/automate-redshift-vacuum-analyze-using-shell-script-utility/

Примеры команд:

Запустите вакуум и проанализируйте все таблицы.

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev 

Запустите вакуум и проанализируйте схему sc1, sc2.

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev -s 'sc1,sc2'

Запустите FULL для всех таблиц во всей схеме, кроме схемы sc1. Но не хочу анализировать

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev -k sc1 -o FULL -a 0 -v 1

or

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev -k sc1 -o FULL -a 0

Запустите Analyze только для всех таблиц, кроме таблиц tb1, tbl3.

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev -b 'tbl1,tbl3' -a 1 -v 0

or 

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev -b 'tbl1,tbl3' -v 0

Используйте пароль в командной строке.

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev -P bhuvipassword

Запустите вакуум и проанализируйте таблицы, где количество несортированных строк превышает 10%.

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev -v 1 -a 1 -x 10

or

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev -x 10

Запустите анализ всех таблиц в схеме sc1, где stats_off больше 5.

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev -v 0 -a 1 -f 5

Запустите вакуум только на таблице tbl1, которая находится в схеме sc1 с порогом вакуума 90%.

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev -s sc1 -t tbl1 -a 0 -c 90

Запустите анализ только схемы sc1, но установите analysis_threshold_percent=0,01

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev -s sc1 -t tbl1 -a 1 -v 0 -r 0.01

Выполните пробный прогон (сгенерируйте SQL-запросы) для анализа всех таблиц в схеме sc2.

./vacuum-analyze-utility.sh -h endpoint -u bhuvi -d dev -s sc2 -z 1
Другие вопросы по тегам