airflow 2.2.1:HdfsSensor使用实操

概述

  1. HdfsSensor主要用于检查hdfs文件或目录是否存在

实操

案例描述:
目前需要在airflow中增加一个任务,用于检测hdfs中的目标文件是否存在。文件绝对路径:/user/hdfs/for_test_2022-05-12.parquet

代码如下

from airflow import DAG
from datetime import datetime, timedelta
from airflow.providers.apache.hdfs.sensors.hdfs import HdfsSensor

# 自定义的方法,用于将日期格式化为指定格式。其中interval表示时区。默认返回格式:2022-05-12
def date_format(logical_date, format="%Y-%m-%d", interval=9):
    new_date = (logical_date + timedelta(hours=interval))
    result = new_date.strftime(format)
    return result
    
# [START instantiate_dag]
with DAG(
        dag_id='spark_sql',
        schedule_interval=None,
        user_defined_macros={
            "date_format": date_format,
        }, # 自定义的方法需要注册为宏变量,后续才能被引用
) as dag:

	# 用于检查文件是否存在
	check_hour_table= HdfsSensor(
        task_id='check_task',
        hdfs_conn_id='hdfs-conn',		# hdfs_conn_id可通过ariflow web界面的Connection进行配置
        mode='reschedule',					# reschedule: 该模式在休眠期间不会占用slot,只有在执行时才会占用
        poke_interval=300,					# 两次检查的间隔时间,单位秒。使用reschedule模式时,建议该值不小于60。
        # 需要检测文件路径。这里也可以使用*进行模糊匹配,例:/user/hdfs/for_test*.parquet。注意:这里面的date_format是我在上面自定义的宏变量,并非airflow自带的
        filepath='/user/hdfs/for_test_{{date_format(logical_date)}}.parquet',  
        # timeout=600,						# 超时时间,单位秒。可根据情况选择是否使用。
		# soft_fail=False,					# 如果设置为true,则失败时将任务标记为跳过。默认false
    )

注意

  1. 需要装的python module:apache-airflow-providers-apache-hdfs
  2. 导包:from airflow.providers.apache.hdfs.sensors.hdfs import HdfsSensor
  3. hdfs_conn_id 是在web页面中添加,host需要指的namenode部署地址,端口一般是 8020

参考文档

HdfsSensor
BaseSensorOperator

说明: HdfsSensor继承于BaseSensorOperator,所以能够使用BaseSensorOperator中的全部参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值