#json #exception #amazon-s3 #amazon-redshift #avro
#json #исключение #amazon-s3 #amazon-redshift #avro
Вопрос:
Я пытаюсь загрузить файлы avro в S3 в таблицу в Redshift. один из файлов Avro имеет неправильный формат. проблема в том, что когда команда copy пытается загрузить этот файл, она выдает исключение и не запускает копирование для правильных файлов. как я могу пропустить файл с неправильным форматом и скопировать правильные файлы? вот мой код для загрузки файла:
COPY tmp.table
FROM 's3://{BUCKET}/{PREFIX}'
IAM_ROLE '{ROLE}'
FORMAT AVRO 's3://{BUCKET}/{AVRO_PATH}'
ошибка, которую я получаю, заключается в:
code: 8001
context: Cannot init avro reader from s3 file Incorrect Avro container file magic number
query: 19308992
location: avropath_request.cpp:438
process: query0_125_19308992 [pid=23925]
Комментарии:
1. Есть ли у вас какие-либо другие файлы, которые начинаются с того же префикса в этой комбинации s3 bucket-prefix, которые не являются avro? Это распространенная проблема при использовании чего-то вроде Spark и неиспользовании файлов манифеста для копирования Redshift. Редактировать: после повторного прочтения вопроса я понимаю, что вы хотите сделать, и это невозможно. Redshift попытается обработать все файлы по пути s3.
2. спасибо @B. Песевски за ответ на этот вопрос. нет, у меня нет другого файла с таким же префиксом. что я сделал, так это изменил вручную одно из полей в файле avro, чтобы формат отличался от ожидаемого, и я получил эту ошибку
Ответ №1:
Вы можете предварительно обработать файлы s3: //{BUCKET} / {PREFIX} и создать файл манифеста только из файлов Avro, которые имеют правильный формат / схему. Redshift не может сделать это за вас и попытается обработать все файлы по пути s3: //{BUCKET} / {PREFIX}.