栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

airflow 2.2.1:HdfsSensor使用实操

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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中的全部参数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/896368.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号