Да, это возможно. Я признаю, что документация о том, как использовать операторы, отсутствует, но если вы понимаете концепцию hooks и операторов в Airflow, вы можете понять это, прочитав код оператор, который вы хотите использовать. В этом случае вам нужно прочитать кодовую базу SqoopHook и SqoopOperator . Большая часть того, что я знаю, как сделать с Airflow, получается из чтения кода, хотя я не использовал этот оператор, я могу попытаться помочь вам здесь как можно лучше.
Предположим, вы хотите выполнить эту команду sqoop:
sqoop import --connect jdbc:mysql://mysql.example.com/testDb --username root --password hadoop123 --table student
И у вас есть сервер Sqoop, работающий на удаленном хосте, к которому вы можете получить доступ с помощью Scoop-клиента в http://scoop.example.com:12000/sqoop/.
Во-первых, вам нужно создать соединение в пользовательском интерфейсе администратора воздушного потока, вызвать соединение sqoop
. Для соединения заполните host
как scoop.example.com
, schema
как sqoop
и port
как 12000
. Если у вас есть пароль, вам нужно будет поместить его в файл на вашем сервере и в extras
заполнить строку json, которая выглядит как {'password_file':'/path/to/password.txt'}
( см. Встроенный код об этом файле паролей).
После того, как вы настроили соединение в пользовательском интерфейсе, теперь можете создать задачу, используя SqoopOperator в вашем DAG-файле. Это может выглядеть так:
sqoop_mysql_export = SqoopOperator(conn_id='sqoop',
table='student',
username='root',
password='password',
driver='jdbc:mysql://mysql.example.com/testDb',
cmd_type='import')
Полный список параметров, которые вы можете передать для импорта, вы можете найти в коде здесь .
Вы можете видеть, как SqoopOperator (и действительно SqoopHook, который оператор использует для подключения к Sqoop) переводит эти аргументы в команды командной строки здесь .
Действительно, этот SqoopOperator просто работает, переводя kwargs, которые вы передаете, в команды CLI клиента sqoop. Если вы посмотрите SqoopHook, вы сможете увидеть, как это делается, и, возможно, выяснить, как заставить его работать в вашем случае. Удачи!
Для устранения неполадок я бы порекомендовал SSHing на сервер, на котором запущен Airflow, и подтвердил, что вы можете запустить клиент Scoop из командной строки и подключиться к удаленному серверу Scoop.