airflow调度使用心得之开发

本文介绍了Airflow在实际应用中的调度经验,涉及SFTPSensor、SFTPOperator、FSHook、WebHDFSHook、WebHdfsSensor等组件的使用,以及文件系统的交互和HDFS的连接。通过实例展示了如何进行文件传输、文件监控、HDFS操作等任务,还涵盖了错误处理和本地调试Airflow脚本的方法。
摘要由CSDN通过智能技术生成

Airflow使用
1.创建任务文件夹
mkdir -p $AIRFLOW_HOME/dags # 对应配置airflow.cfg中的dags_folder
注:dags_folder会自动寻找子目录下的dag
2.部分API使用例子
下面组件中使用的各项conn_id连接配置需通过airflow界面端添加,web UI页面登录用户为superuser,之后可通过Admin-》Connection-》*(eg:ssh_default)添加对应conn_id的配置参数(ip/user/passwd/port等)。
2.1.SFTPSensor
class airflow.contrib.sensors.sftp_sensor.SFTPSensor (path, sftp_conn_id=‘sftp_default’, *args, **kwargs)
作用:
等待SFTP上存在指定文件或文件夹。
参数:
path(str) – 远程文件或文件夹路径;
sftp_conn_id(str) – 运行该sensor的连接配置。
使用示例:
sftp_file_sensor = SFTPSensor(
sftp_conn_id=‘test_sftp_conn_id’, # web端建立的sftp连接配置
task_id=‘sftp_task_1’, # 标识该任务的id
path="/home/user/tmp/test.txt", # sftp上查找目标文件
poke_interval=20, # interval time between each tries,default-60s
dag=dag
)
2.2.SFTPOperator
class airflow.contrib.operators.sftp_operator.SFTPOperation (ssh_hook=None, ssh_conn_id=None, remote_host=None, local_filepath=None, remote_filepath=None, operation=SFTPOperation.PUT, confirm=True, create_intermediate_dirs=False, *args, **kwargs)
作用:
SFTPOperator用于将文件从远程主机传输到本地(get),或从本地传至远程机(put)。这个operator使用ssh_hook打开一个sftp传输通道作为文件传输的基础服务。
参数:
ssh_hook – 为远程执行预定义的ssh_hook,ssh_hook或ssh_conn_id提供连接配置;
ssh_conn_id – airflow连接的连接id。若ssh_hook已提供可忽略ssh_conn_id;
remote_host – 默认为空,若设置则替代ssh_hook或ssh_conn_id中配置的远程主机;
local_filepath – get/put本地文件路径;
remote_filepath – get/put远程文件路径;
operation – 指定操作类型,“get”或“put”,默认为put;
confirm – 指定是否确认SFTP操作,默认为True;
create_intermediate_dirs – 执行copy文件到本地或反之的操作时建立缺失的路径文件,默认为False。
使用示例:
get_file = SFTPOperator(
ssh_conn_id=‘test_ssh_conn_id’, # 需要连接的远程机连接id
task_id=‘sftp_task_2’,
remote_filepath="/home/user1/tmp/test.txt", # 远程文件路径
local_filepath="/home/user2/sftp/test-43.txt", # 本地文件路径
operation=‘get’, # From Remote to Local
create_intermediate_dirs=True, # 若不存在本地存放时的路径,则创建
dag=dag
)
put_file = SFTPOperator(
task_id=“test_sftp”,
ssh_conn_id=“test_ssh_conn_id”,
local_filepath="/tmp/file.txt",
remote_filepath="/tmp/tmp1/tmp2/file.txt",
operation=“put”, # From Local to Remote
create_intermediate_dirs=True,
dag=dag
)
2.3.FSHook
class airflow.contrib.hooks.fs_hook.FSHook(conn_id=‘fs_default’)
作用:
允许与文件服务器进行交互。
参数:
conn_id – 文件服务器连接id,extra参数中配置额外的文件路径。
使用示例:
conn_file = FSHook(
conn_id = ‘test_fs_dir’ # must localhost can running
)
2.4.WebHDFSHook
class airflow.hooks.webhdfs_hook.WebHDFSHook(webhdfs_conn_id=‘webhdfs_default’, proxy_user=None)
作用:
与HDFS交互。且使用hdfscli库,即使用hdfs中的WebUI端口(默认为50070)连接hdfs。
参数:
webhdfs_conn_id – webhdfs客户端要连接的连接id;
proxy_user – 用于认证的用户。
使用示例:
conn_hdfs = WebHDFSHook(
webhdfs_conn_id=‘test_webhdfs_conn_id’,
proxy_user=‘fxjk’
)
使用中遇到的错误说明:
上传文件到hdfs时:(WebHDFSHook)
报错:
ERROR - Error while uploading. Attempting cleanup。
NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7f7ab0f1b790>: Failed to establish

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值