Добавить груз в AWS Glue
Мне нужно выполнить дополнительную загрузку в S3 Bucket.
- Каждый день новый файл.gz сбрасывается в папку S3, и сканер клея считывает данные и обновляет их в каталоге данных.
- Задание Scala AWS Glue выполняется и фильтрует данные только за текущий день.
- Отфильтрованные выше данные преобразуются в соответствии с некоторыми правилами, и создается разделенный динамический фрейм данных (т. Е. Год, месяц, день).
Теперь мне нужно записать этот динамический фрейм данных в корзину S3, в которой присутствуют все разделы предыдущего дня. Фактически мне просто нужно записать только один раздел в корзину S3. В настоящее время я использую приведенный ниже фрагмент кода для записи данных в корзину S3.
// Write it out in Parquet for ERROR severity
glueContext.getSinkWithFormat(
connectionType = "s3",
options = JsonOptions(Map("path" -> "s3://some s3 bucket location",
"partitionKeys" -> Seq("partitonyear","partitonmonth","partitonday"))),
format = "parquet").writeDynamicFrame(DynamicFrame(dynamicDataframeToWrite.toDF().coalesce(maxExecutors), glueContext))
Я не уверен, будет ли вышеуказанный фрагмент кода выполнять добавочную загрузку или нет. Есть ли способ через библиотеки склеивания AWS добиться того же?
1 ответ
Ваш скрипт добавит новые файлы данных в соответствующий раздел. Так что, если вы обрабатываете только сегодняшние данные, он создаст новый раздел данных под path
, Например, если сегодня 2018-11-28, он создаст новый объект данных в s3://some_s3_bucket_location/partitonyear=2018/partitonmonth=11/partitonday=28/
папка.
Если вы попытаетесь записать данные в существующий раздел, то Glue добавит новые файлы и не удалит существующие объекты. Однако это может привести к дублированию, если запускать задание несколько раз для обработки одних и тех же данных.