Как я могу экспортировать файл HDFS в S3 на локальный компьютер как файл CSV, используя Airflow - PullRequest
0 голосов
/ 26 марта 2020

Я хочу создать задание воздушного потока для экспорта файла hdfs, хранящегося в S3, на локальный компьютер. Какой оператор воздушного потока может быть использован для этого

1 Ответ

0 голосов
/ 27 марта 2020

Нет конкретного оператора воздушного потока, который мог бы полностью удовлетворить ваши потребности, однако, что касается моего, я вижу два варианта (способа), как потенциально решить эту проблему:

  1. Базовый подход c, используя AWS CLI util, вызывая команду cp в потоке воздуха BashOperator , использующий инструменты Bash для копирования целевого файла S3 в локальный пункт назначения, этот метод уже обсуждался в этом стеке поток , но в несколько ином сценарии.
  2. Помимо операторов, Airflow содержит гибкий механизм, называемый Hooks , который широко расширяется Функциональность операторов за счет реализации канала связи с внешними платформами. Существует модуль S3_hook , который предназначен для выполнения операций, связанных с AWS S3, первоначально основанных на библиотеке AWS boto3. Однако, вероятно, вы не найдете подходящего метода в списке содержимого, в котором вы могли бы быть интересны. Но недавно я обнаружил S3_to_hive_operator , после проверки всей структуры и source код, я нашел execute() Python функцию, которая запускает метод boto3 download_fileobj () , загружая файл из корзины S3 на локальный диск. Следовательно, вы можете использовать пользовательский Airflow Operator , предоставляя ему частично измененную функцию execute() в конкретном методе S3_hook.

Надеюсь, что это может быть полезно для ваших исследований.

...