Как преобразовать сжатые файлы без заголовков, разделенные по конвейеру, файлы, хранящиеся в S3, в паркет с помощью AWS Glue

В настоящее время у меня есть несколько тысяч сжатых GZIP-файлов без заголовка в формате S3 на S3 общей стоимостью ~10 ТБ с той же схемой. Как лучше всего в AWS Glue (1) добавить файл заголовка, (2) преобразовать в формат паркета, разбитый по неделям, с помощью поля "date" в файлах, (3) добавить файлы в Glue Каталог данных для доступности для запросов в AWS Athena?

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 вручную, вы также можете использовать сканер клея, чтобы создать ее для вас. Однако это повлечет за собой определенные расходы.

Другие вопросы по тегам