У меня был AWS Glue Job со скриптом ETL в pyspark, который записывал динамический c фрейм в красное смещение в виде таблицы и в s3 как json. Один из столбцов в этом df: status_date . У меня не было проблем с написанием этого df.
У меня тогда было требование добавить еще два столбца financial_year и financial_qarter на основе status_date, Для этого я создал udf добавил две новые колонки. Используя printSchema () и show (), я увидел, что столбцы были успешно созданы, а значения в столбцах были собраны.
Проблема возникла, когда я попытался записать это в aws s3 и aws красное смещение. Это выдаёт странную ошибку, которую я не могу устранить.
Ошибка при записи в Redshift - An error occurred while calling o177.pyWriteDynamicFrame. File already exists:s3://aws-glue-temporary-***********-ap-south-1/ShashwatS/491bb37a-404a-4ec5-a459-5534d94b0206/part-00002-af529a71-7315-4bd1-ace5-91ab5d9f7f46-c000.csv
Ошибка при записи в s3 как json - An error occurred while calling o175.json. File already exists:s3://bucket_name/folder1/folder2/folder3/folder4/24022020124055/part-00026-fd481713-2ccc-4d23-98b0-e96908cb708c-c000.json
Как видите, обе ошибки похожи. Ниже приведен след ошибки. Некоторая помощь требуется.
> org.apache.spark.SparkException: Job aborted due to stage failure:
> Task 3 in stage 503.0 failed 4 times, most recent failure: Lost task
> 3.3 in stage 503.0 (, executor 15):
> org.apache.hadoop.fs.FileAlreadyExistsException: File already
> exists:s3://bucket_name/folder1/folder2/folder3/folder4/24022020150358/part-00003-055f9327-1368-4ba7-9216-6a32afac1843-c000.json
> at
> com.amazon.ws.emr.hadoop.fs.s3.upload.plan.RegularUploadPlanner.checkExistenceIfNotOverwriting(RegularUploadPlanner.java:36)
> at
> com.amazon.ws.emr.hadoop.fs.s3.upload.plan.RegularUploadPlanner.plan(RegularUploadPlanner.java:30)
> at
> com.amazon.ws.emr.hadoop.fs.s3.upload.plan.UploadPlannerChain.plan(UploadPlannerChain.java:37)
>