У меня есть большое количество событий, разделенных yyyy / mm / dd / hh в S3. Каждый раздел содержит около 80 000 необработанных текстовых файлов. Каждый необработанный файл содержит около 1.000 событий в формате JSON.
Когда я запускаю сценарий для преобразования:
datasource0 = glueContext.create_dynamic_frame.from_catalog(database=from_database,
table_name=from_table,
transformation_ctx="datasource0")
map0 = Map.apply(frame=datasource0, f=extract_data)
applymapping1 = ApplyMapping.apply(......)
applymapping1.toDF().write.mode('append').parquet(output_bucket, partitionBy=['year', 'month', 'day', 'hour'])
В итоге я получаю большое количество небольших файлов в разделах с такими именами:
part-00000-a5aa817d-482c-47d0-b804-81d793d3ac88.snappy.parquet
part-00001-a5aa817d-482c-47d0-b804-81d793d3ac88.snappy.parquet
part-00002-a5aa817d-482c-47d0-b804-81d793d3ac88.snappy.parquet
Каждый из них имеет размер 1-3 КБ. Число примерно соответствует количеству имеющихся у меня необработанных файлов.
У меня сложилось впечатление, что Glue берет все события из каталога, разбивает их так, как я хочу, и хранит в одном файле для каждого раздела.
Как мне этого добиться?