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

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

  1. Каждый день новый файл .gz выгружается в расположение S3, и сканер glue считывает данные и обновляет их в каталоге данных.
  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?


person trp    schedule 28.11.2018    source источник


Ответы (1)


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

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

person Yuriy Bondaruk    schedule 29.11.2018