В настоящее время у меня есть несколько тысяч сжатых GZIP файлов без заголовков, разделенных конвейером, в S3 общим объемом ~ 10 ТБ с той же схемой. Как лучше всего в AWS Glue (1) добавить файл заголовка, (2) преобразовать в формат паркета, разбитый по неделям, с использованием поля «дата» в файлах, (3) добавить файлы в Glue Каталог данных для доступности для запросов в AWS Athena?
Как преобразовать сжатые файлы без заголовков, файлы с разделителями, хранящиеся в S3, в паркет с помощью AWS Glue
Ответы (1)
1) Создайте таблицу athena, указывающую ваши данные на S3:
Создать внешнюю таблицу на Афине
2) Создайте динамический фрейм из каталога клея, используя таблицу, созданную вами на предыдущем шаге.
from awsglue.context import GlueContext
glueContext = GlueContext(SparkContext.getOrCreate())
DyF = glueContext.create_dynamic_frame.from_catalog(database="{{database}}", table_name="{{table_name}}")
3) Запишите данные обратно в новое место S3 в любом формате, который вам нравится:
glueContext.write_dynamic_frame.from_options(
frame = DyF,
connection_type = "s3",
connection_options = {"path": "path to new s3 location"},
format = "parquet")
4) Создайте таблицу athena, указав ваши паркетные данные на S3:
Создать внешнюю таблицу на Афине
Примечание: вместо того, чтобы создавать таблицу athena вручную, вы также можете использовать поисковый робот, чтобы создать ее для вас. Однако это повлечет за собой некоторые расходы.
person
Harsh Bafna
schedule
18.05.2019
Это отвечает только на 1 часть моего вопроса
- person ikemblem; 19.05.2019
Я обновил ответ на последнюю часть. Я не могу понять, что вы имеете в виду, говоря о добавлении файла заголовка? Не могли бы вы уточнить. Я предполагал, что вы хотите принудительно создать схему поверх данных CSV, что можно сделать на первом этапе.
- person Harsh Bafna; 20.05.2019
Файлы данных CSV в настоящее время не имеют заголовка (имен столбцов), но у меня есть отдельный файл с этой информацией, которую я хотел бы добавить.
- person ikemblem; 20.05.2019
все, что вам нужно, это стол Афины. Поскольку у вас уже есть схема и она вряд ли изменится, шаг 1 решит вашу проблему. Вам не нужно добавлять этот дополнительный файл, содержащий заголовки, в S3.
- person Harsh Bafna; 20.05.2019
Таблица athena хранит метаинформацию в каталоге клея, а задание glue etl извлечет схему из метаданных каталога клея.
- person Harsh Bafna; 20.05.2019