Добавить груз в AWS Glue - PullRequest
       29

Добавить груз в AWS Glue

0 голосов
/ 28 ноября 2018

Мне нужно выполнить дополнительную загрузку в корзину S3.

  1. Каждый день новый файл .gz выгружается в папку S3, и сканер клея считывает данные и обновляет их в каталоге данных.
  2. Задание Scala AWS Glue запускается и фильтрует только данные за текущий день.
  3. Указанные выше отфильтрованные данные преобразуются в соответствии с некоторыми правилами и разделенным динамическим фреймом данных (т. Е. Годом, месяцем, днем)Уровень создан.

Теперь мне нужно записать этот динамический фрейм данных в корзину 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 Ответ

0 голосов
/ 29 ноября 2018

Ваш скрипт добавит новые файлы данных в соответствующий раздел.Так что, если вы обрабатываете только сегодняшние данные, он создаст новый раздел данных под path.Например, если сегодня 2018-11-28, он создаст новый объект данных в папке s3://some_s3_bucket_location/partitonyear=2018/partitonmonth=11/partitonday=28/.

Если вы попытаетесь записать данные в существующий раздел, Glue добавит новые файлы и не удалит существующие объекты,Однако это может привести к дублированию при многократном запуске задания для обработки одних и тех же данных.

...