Airflow: Как загрузить файл из Linux в Windows через smbclient - PullRequest
0 голосов
/ 27 марта 2019

У меня есть группа доступности базы данных, которая импортирует данные из источника на сервер.Оттуда я ищу, чтобы загрузить этот файл с сервера в сеть Windows.Я хотел бы сохранить эту часть в Airflow для целей автоматизации.Кто-нибудь знает, как это сделать в Airflow?Я не уверен, использовать ли пакет os, пакет shutil или, может быть, есть другой подход.

1 Ответ

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

Я думаю, вы говорите, что ищете способ передачи файлов с облачного сервера на общий диск Windows или на компьютер в сети Windows. Вот некоторые варианты, которые я видел:

  1. Используйте сервис, такой как google drive, dropbox, box или s3, для имитации синхронизированной папки на облачном компьютере и компьютере в сети Windows.
  2. Вызовите команду bash, чтобы SCP файлы перешли на сервер Windows или работника в сети. Это может работать и в обратном направлении.
  3. Добавьте файлы в репозиторий git и попросите работника в сети Windows синхронизировать репозиторий в общем расположении. Этот вариант хорош только в очень конкретных случаях. Преимущество заключается в том, что вы можете отслеживать изменения и восстанавливать старые состояния (если данные представлены в формате CSV или в другом текстовом формате), но это не очень удобно для больших или двоичных файлов.
  4. Используйте rsync, чтобы передать файлы работнику в сети Windows, к которому смонтировано общее местоположение, и переместить файлы в синхронизированный каталог с помощью python или bash.
  5. Смонтируйте сетевой диск на сервере и используйте python или bash для перемещения файлов туда.

Все это должно быть возможно с Airflow, используя либо python (shutil), либо сценарий bash для передачи файлов в нужный каталог, чтобы их мог выбрать другой процесс, либо вызывая подпроцесс bash для выполнения прямая передача по SCP или передача данных через git. Вам нужно будет выяснить, что возможно с вашим брандмауэром и сетевыми настройками. Некоторые из них потребовали бы координации задач на стороне Windows (например, для опции git потребовалось бы какое-нибудь задание cron или планировщик задач, чтобы получить хранилище, чтобы поддерживать файлы в актуальном состоянии).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...