Как записать в несколько сегментов S3 на основе различных значений фрейма данных в задании AWS Glue? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть фрейм данных со столбцом account_id. Я хочу сгруппировать все отдельные account_id строки и записать в разные корзины S3. Запись в новую папку для каждого account_id в заданном сегменте S3 тоже работает.

1 Ответ

2 голосов
/ 06 августа 2020

Если вы хотите, чтобы все похожие идентификаторы 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
...