python - Airflow:如何从不同的服务器进行 SSH 和运行 BashOperator

标签 python ssh airflow

有没有办法通过 ssh 连接到不同的服务器并使用 Airbnb 的 Airflow 运行 BashOperator? 我正在尝试使用 Airflow 运行 hive sql 命令,但我需要通过 SSH 连接到另一个盒子才能运行 hive shell。 我的任务应该是这样的:

  1. SSH 到服务器 1
  2. 启动 Hive 外壳
  3. 运行 Hive 命令

谢谢!

最佳答案

不适用于 Airflow 2.x。

我想我只是想通了:

  1. 在 UI 中的 Admin > Connection 下创建 SSH 连接。注意:如果您重置数据库,连接将被删除

  2. 在 Python 文件中添加以下内容

     from airflow.contrib.hooks import SSHHook
     sshHook = SSHHook(conn_id=<YOUR CONNECTION ID FROM THE UI>)
    
  3. 添加 SSH 运算符(operator)任务

     t1 = SSHExecuteOperator(
         task_id="task1",
         bash_command=<YOUR COMMAND>,
         ssh_hook=sshHook,
         dag=dag)
    

谢谢!

关于python - Airflow:如何从不同的服务器进行 SSH 和运行 BashOperator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39457592/

相关文章:

airflow - 以编程方式清除 Airflow 任务实例的状态

python - 多个线程可以使用同一个端口吗

mysql - BASH 脚本 - 通过 ssh 连接并运行 mysql 命令

windows - 无法使用 SSH 连接到服务器,在 Windows 10 中显示 "ssh: connect to host 178.128.60.26 port 22: Connection timed out"

java - 在 Unix 上使用 Java 验证 SSH 凭据

python - BashOperator 为其他 PythonOperators 中使用的库引发 ImportError

amazon-ec2 - "Error:/run/airflow doesn' t 存在。将 systemd 用于 Airflow 网络服务器时可以为 't create pidfile."

python - 您使用什么方法和工具来设计和分析 Web 应用程序中的工作流(适用于小型团队)

python - 如何在 Eclipse 中运行 django 测试以使调试成为可能,但在测试数据库上

python找出已添加哪些列表以诊断内存泄漏