Я работаю над проектом методологии Agile с EMR в качестве механизма обработки, AWS Athena с Tableu в качестве уровня представления и S3 в качестве уровня хранения. Есть ли способ обеспечить создание имен файлов таблиц в командном режиме aws athena cli?
Пока что я попробовал два нижеприведенных варианта, которые неэффективны или не работают должным образом.
1.Ручное создание внешних таблиц через консоль AWS всякий раз, когда запрашивается новое поле добавления или добавляется новая таблица.
2.Пробовал ниже, но не работал
экспорт ATHENA_EXT_TABLE_1_SETUP = $ (sed 's / $ {env: EXPORT_LOCATION} / $ EXPORT_LOCATION / g' hive / ext / table_1_setup.q | envsubst)
«Имя»: «настройка таблиц athena»,
"Арги": [
"AWS",
«Афина»,
«Запуск выполнения запроса»,
"--Строка запроса",
"$ ATHENA_EXT_TABLE_1_SETUP",
"--Query-исполнение-контекст",
«База данных = отчетность»,
"--Result-конфигурации",
"OutputLocation = $ ATHENA_LOCATION"
]
поместите вышеперечисленное в файл json и вызовите его через файл jar командной строки aws, но поскольку оператор create external table настолько велик, переменная ATHENA_EXT_TABLE_1_SETUP не может содержать всю строку, которая будет добавлена как часть шагов кластера EMR
aws emr add-steps --cluster-id $ CLUSTER_ID --steps "$ (cat hive / ext / table_setup.json | envsubst)"
Все наши настройки создания внешних таблиц хранятся в файлах, по одному для каждой таблицы, а EMR - это временный кластер. Мы запускаем сценарии установки в начале процесса запуска EMR и делаем внешние файлы доступными для обработки. Я хочу использовать файлы настройки внешних таблиц, которые будут использоваться для создания таблиц в Афине, я ищу некоторую команду в Афине, которая выглядит как куст и ниже
hive -f "/home/hadoop/hive/ext/table_1_setup.q"
Это поможет нам выполнить настройку в Афине как часть процесса CI / CD, в противном случае нам нужно делать это каждый раз вручную.
Интересно, почему AWS не предоставил возможность предоставления файла в качестве входных данных в строке запроса aws cli
aws athena start-query-execute --query-string {value}
Есть ли способ обеспечить чтение из файла?