Как выполнить запись в несколько корзин S3 на основе различных значений фрейма данных в задании AWS Glue?
У меня есть фреймворк с account_id
столбец. Я хочу сгруппировать все отдельныеaccount_id
строк и записывать в разные корзины S3. Запись в новую папку для каждогоaccount_id
в пределах заданного ведра S3 тоже работает.
1 ответ
Если вы хотите, чтобы все похожие идентификаторы account_ids присутствовали в одной папке, вы можете сделать это с помощью функции partitionBy. Ниже приведен пример, который сгруппирует все идентификаторы account_ids и запишет их в формате паркета в разные папки. Вы можете изменить режим в зависимости от вашего варианта использования.
df.write.mode("overwrite").partitionBy('account_id').parquet('s3://mybucket/')
Если вам нужно несколько разделов, вы можете сделать это, добавив столбцы в функцию partitionBy. Например, представьте, что у вас есть дата столбца со значениями форматаyyyy/mm/dd
то нижеприведенный фрагмент снова создаст папки внутри account_id
с несколькими датами.
df.write.mode("overwrite").partitionBy('account_id','date').parquet('s3://mybucket/')
запишет файлы в S3 в следующем формате:
s3://mybucket/account_id=somevalue/date=2020/11/01
s3://mybucket/account_id=somevalue/date=2020/11/02
s3://mybucket/account_id=somevalue/date=2020/11/03
......
s3://mybucket/account_id=somevalue/date=2020/11/30