Получение кода ответа S3 (только HTTP-код, например 200,300,400,403,500 и т. Д.) При сохранении файла с использованием S3a в pyspark - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь получить код HTTP и сохранить его в таблице RDS для последующего анализа задания pyspark, которое сохранит файл в формате AVRO на S3, используя S3a.После сохранения файла я знаю, что будет возвращен код состояния от S3, но я не уверен, как записать это в коде.пожалуйста, найдите фрагмент кода.

def s3_load(df, row):
    df.write.\
       format("com.databricks.spark.avro").\
       save("s3a://Test-" + row["PARTNER"].lower() + "/" + row["TABLE_NAME"] + "/" +
            datetime.datetime.today().strftime('%Y%m%d'))

В приведенном выше коде я хотел бы получить возврат в качестве кода состояния.Примечание: я могу сохранить файл в формате S3 в формате AVRO.

Спасибо

1 Ответ

0 голосов
/ 01 марта 2019

Это аналогичная концепция, обсуждаемая в этом вопросе, получение кода состояния библиотеки или функции, которая оборачивает API s3: Amazon S3 POST, событие, когда выполнено?


В конечном счете, если библиотека данных является библиотекой, обрабатывающей загрузку, полученный код ответа от вызова функции df.write.save(...) будет найден где-то в результате вызова функции блоков данных.

Блоки данных поддерживают s3 и s3a в качестве целевых назначений для сохранения файлов (, как показано в их документах здесь ), но, похоже, что блоки данных не отображают код ответа из нижележащегооперации здесь (возможно, они делают, я не мог найти это ни в одном из документов).

Несколько вариантов для продвижения вперед:

  • Если предположить, что блоки данных приведут к «некоторому» типу ошибки для этой загрузки, простой try / except позволит вам правильно его отловить (хотя все ошибки уровня, не связанные с базами данных, все равно пройдут).

  • В AWS загрузка сегментов s3 - это источник событий, который можно использовать в качестве триггера для других операций, таких как вызов лямбда-кода AWS, который можно использовать для вызова произвольной размещенной в облаке функции.В содержится много информации о том, как эта архитектура будет выглядеть в этом руководстве.

  • В зависимости от необходимости параллельной загрузки, вы можете переписать свою маленькую функцию загрузки, используя boto3, официальная библиотека AWS python.Обсуждение того, как обрабатывать эти коды ошибок / ответов , обсуждается здесь.

  • Кажется, что блоки данных журнала также имеют возможности ведения журнала аудита где-то в своем корпоративном предложении .

...