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