我有一个任务,我将调用具有多个上游连接的final。当ShortCircuitOperator跳过其中一个上游时,此任务也会被跳过。我不想跳过final任务,因为它必须报告DAG成功
为了避免它被跳过,我使用了trigger\u rule='all\u done',但它仍然被跳过
如果我使用BranchPythonOperator而不是ShortCircuitOperatorfinal任务不会被跳过。分支工作流似乎是一个解决方案,尽管不是最优的,但现在final将不考虑上游任务的失败
如何使其仅
背景
我试着从周一到周五,每天晚上10点在美国/纽约运行一次DAG。DAG运行的脚本在其运行的当天作为输入
时区(周一至周五晚上10点)。当我把这个纸条作为一个DAG运行时,日期是从宏{{ds_nodash}}
问题
当气流运行时,纽约时间晚上10点,UTC时间已经是第二天了。由于Airflow使用UTC,执行日期提前一天,因此当我的DAG使用宏{{ds_nodash}}时,它提前一天
问题:
是否有办法将时区调整日期作为气流上的宏获取,或者是我自己调整宏的问题的唯一解决方案?现在气流中提供了时
从1.9版本升级到1.10.2版本后,我遇到了“任务日志读取器”错误
错误为:“airflow.exceptions.AirflowConfigException:配置的任务\u日志\u读取器“任务”不是“airflow.task”记录器的处理程序”
我更改了airflow.cfg,如中所示:
等
我遗漏了什么?不确定这是否仍然相关;我有一个类似的问题,但有一个不同的错误消息
正确的配置文件应该是这样的:
log_filename_template = {{ ti.dag_id }}/{{
标签: Airflow
directed-acyclic-graphsreturn-code
我试图确定.log文件中的哪些内容使特定任务在aiffair中标记为“成功”与“失败”。我感觉这取决于操作员(PythonOperatorvsEmailOperatorvsBashOperator等)
我看到不同的返回代码。例如,INFO-任务以返回代码1退出或INFO-任务以返回代码0退出或INFO-进程psutil.Process(pid=00000,status='terminated')(00000)以退出代码-15终止
我没有看到一致性。。我首先认为INFO-任务退出时返回代码为0是成
标签: Airflow
google-cloud-composerapache-airflow-xcomgcp-ai-platform-training
我正在使用airflow计划gcloud AI平台中模型版本的培训
我成功地安排了模型的培训、版本的创建,然后使用此DAG将最后一个版本设置为默认版本:
将DAG(“ml\U管道”,计划间隔=无,默认参数=默认参数)作为DAG:
uuid=str(uuid4())
培训\u op=MLEngineTrainingOperator(
任务\'u id='submit \'u job \'u for \'u training',
项目id=项目id,
作业id='training'.{}.格式(uu
我正在尝试在本地airflow环境中运行一个DAG,该环境连接到我的Google Cloud Platform帐户,因此我能够创建新的GCP虚拟机实例,并将它们配置为按计划的时间间隔处理临时区域中的文件。作为其中的一部分,我必须使用从标准气流操作符继承属性的自定义操作符。当我导入我的第一个自定义操作符并运行我的DAG时,它会正常运行,但是,如果我尝试导入更多自定义操作符,则我的DAG会失败,并给出下图和错误消息
如果有人能帮我找出这里可能出现的问题,并与我分享任何有用的提示或检查,我将不胜感激
我有DAG:
dag = DAG(
dag_id='example_bash_operator',
default_args=args,
schedule_interval='0 0 * * *',
start_date=days_ago(2),
dagrun_timeout=timedelta(minutes=60),
tags=['example']
)
dag.cli()的意义是什么?
cli()扮演什么角色
今天是10月14日。当我添加c
我目前正在尝试设置气流监控,理想情况下,在执行DAG时发送一封电子邮件,邮件中包含有关所有包含任务的一些信息,如任务的最终状态、运行时等
我目前未能解决的问题是:
如何获取与DAG运行关联的所有任务实例的状态
将邮件作为DAG中的一个组件发送有意义吗
如果是这样的话,我如何以一种简单的方式保证该任务将在所有其他任务之后运行
除此之外,我还有一个附加的pickle,我所寻找的解决方案在某种意义上必须是简单的,即它应该只有2-3行代码,或者可以泛化为Python函数,因为我的Python经验较少
当我开发气流并打开DAG时,它会失败,比如说,第6步,而第7-9步不会启动。但是在我调试这个问题之前,下一个实例(我把开始日期放在过去)将启动并一直运行到步骤5,在步骤6失败,完全打乱了我的工作流程。这是预期的行为,还是可以将其关闭,以使下一个实例在该实例处处显示为绿色之前不会启动?检查文档,了解可以在操作符上设置的以下两个选项
依赖于过去(bool)–当设置为true时,任务实例将按顺序运行,同时依赖上一个任务的计划成功。允许运行开始日期的任务实例
wait_for_down(bool)–当设
我有一个问题,bash操作符没有记录wget的所有输出。它将只记录输出的前1-5行
我只使用wget作为bash命令进行了尝试:
tester = BashOperator(
task_id = 'testing',
bash_command = "wget -N -r -nd --directory-prefix='/tmp/' http://apache.cs.utah.edu/httpcomponents/httpclient/source/httpcomponents-c
我有一个简单的气流工作流程,由两个任务组成。下载包含股票数据的csv文件。另一个提取最高股价并将数据写入另一个文件
如果我运行第一个任务,然后运行第二个任务,那么一切都正常,而不是执行:气流运行库存\u d获取\u max\u共享,则无法满足依赖关系
import csv
from datetime import datetime
from datetime import timedelta
from airflow import DAG
from airflow.operators.pytho
在文档()中给出的气流演示教程(刚刚开始使用气流进行试验测试)之后,我注意到在运行回填气流回填教程-s 2015-06-01-e 2015-06-07时,对于某些任务存在“未满足的相关性”的初始投诉
[me@mapr001 dags]$ airflow backfill tutorial -s 2015-06-01 -e 2015-06-07
[2018-07-20 14:34:29,868] {__init__.py:45} INFO - Using executor SequentialEx
我正在运行气流教程。tutorial.py中的内容如下:
"""
Code that goes along with the Airflow located at:
http://airflow.readthedocs.org/en/latest/tutorial.html
"""
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import dateti
如何使用环境变量在气流中设置Google Cloud/BigQuery连接参数;因此,避免需要登录UI或运行脚本?假设项目位于env varGOOGLE\u CLOUD\u项目中,您可以设置这些
AIRFLOW_CONN_GOOGLE_CLOUD_DEFAULT=;?extra__google_cloud_platform__project=$GOOGLE_CLOUD_PROJECT
AIRFLOW_CONN_BIGQUERY_DEFAULT=;?extra__google_cloud_plat
当任务实例在工作流中标记为State.REMOVED State时?当我使用for循环动态生成任务时,执行其中一个任务后,其他任务将被删除,并且不会再次恢复。气流.models应用已删除的状态。DagRun:在数据库中找到关联的DAG对象上不再存在的任务id时,验证完整性。如果您使用不同的task\u id值动态构建任务,则肯定会发生这种情况。是的,我使用不同的task\u id创建任务,因为当我看到管道运行时,它更可读,因为所有任务都使用不同的参数执行相同的任务。这个问题有什么解决方案吗?还有
我的目标是使用EmrCreateJobFlowOperator和EmrAddStepsOperator调度作业。也就是说,我想创建集群,并为从指定日期开始的每个计划日(或小时)添加步骤。基本上,我希望EmrAddStepsOperator被回填,但不希望EmrCreateJobFlowOperator。为了实现这一点,我认为我可以使用子dag概念,其中父dag将禁用追赶,子dag将启用追赶。我不想为每个步骤创建EMR集群。
这可能吗?还有其他选项吗?Catchup=False在Dag级别设置。对
我们有一个DAG,它从一个广告平台上获取一些数据。这些广告被组织成活动。我们的目标是为这些活动引入高级指标。为此,我们首先需要获得给定执行日期的活动列表——幸运的是,如果我们知道要查询的时间范围,广告平台的API使这一点变得微不足道
目前,我们的DAG的结构是去获取这些活动,然后将它们存储在S3中,最后是红移。然后,我们在设置后续任务之前查询Redshift,这些任务提取每个活动的数据。这是总的部分。我们也可以查看S3,但问题是键是用ds宏的值模板化的。在构建DAG本身时,似乎没有办法知道该值
重写问题:
使用,我想安排一个进程从凌晨2点到10点每两小时运行一次,22:30一次。schedule\u interval参数接受cron表达式,但无法定义单个cron表达式来实现上述调度。目前,我做到了:
dag=dag(进程名称,计划间隔=302,4,6,8,10,12,14,16,18,20,22,23***',默认参数=默认参数)
但这将在一小时后每30分钟执行一次,从2点到23点每2小时执行一次
有没有一种方法可以将两个cron计划组合在一起
0 2-10/2 * * *
30 2
由于此错误,我无法启动DAG。我认为这是因为传感器,但当我编辑我的Dag几次时,它仍然显示这个问题,因此它没有连接到我的Dag代码
错误消息-“执行者报告任务实例已完成(失败),尽管任务表示其已排队。任务是否已在外部终止?”有用链接,
几乎我所有的DAG都有重复运算符的子集。由于我的用例,创建新的包装器操作符非常有效,它结合了多个操作符以减少样板文件
我的问题是如何将它们结合起来
例如,查询数据库,然后发送Slack消息
postgres\u operator\u task>>slack\u operator\u task->查询\u然后\u slack\u operator\u task检查子DAG的想法。
资源:
检查subdag的概念。
资源:
实现这一点的方法可能有很多种。您可以定义一个自定义运算符,该
我在用芹菜执行者和兔子。更改了气流配置文件,如下所示
broker_url = amqp://guest:guest@localhost:5672//
celery_result_backend = amqp://guest:guest@localhost:5672//
已启动webserver和其他服务,但webui url不工作。
同时列出dag低于警告的情况
WARNING - You have configured a result_backend of amqp://guest:gu
我有两个定义的任务应该重用(定义一次),并且取决于一些变量模式以不同的方式连接,一些任务可能在所需的dag中被完全排除,但目前找不到一个简单的方法如何以编程方式从dag任务集合中排除所有这些任务
(例如,在模式C中,任务t3和t5不应成为dag的一部分。)
我知道BranchPythonOperator和触发规则s,但DAG变得超级复杂,因为依赖于每个任务实例的过去语义
mode='A'或'B'或'C'
使用DAG(DAG_id=模式,
开始日期=。。。,
计划时间间隔=。。。,
默认值_arg
标签: Airflow
google-cloud-composeramazon-data-pipelinegcsfusedata-pipeline
我习惯于通过AWS数据管道运行管道,但对气流(Cloud Composer)越来越熟悉
在数据管道方面,我们将:
生成一个任务运行程序
引导它
工作,
杀死任务执行者
我刚刚意识到我的气流跑步者不是昙花一现的。我触摸了/tmp中的一个文件,在单独的DagRun中再次触摸,然后列出/tmp并找到两个文件。我只希望我最近碰过的那个
这似乎意味着我需要注意runner上本地存储了多少“东西”
我知道地面军事系统用FUSE挂载/data文件夹,所以我默认在那里存储大量工作文件,并将文件从那里移动到其
要求:创建用于运算符、DAG等的自定义日期函数
下面是DAG文件
DAG
来自气流导入DAG
从afflow.operators.python_operator导入PythonOperator
从datetime导入datetime,timedelta
从alerts.custom\u date导入strt\u of\u wk\u strt\u mon\u dt,NEXT\u DS\u NODASH
默认参数={
“所有者”:“气流”,
“依赖于过去”:False,
“开始日期”:日期时间(20
我使用头盔在库伯内特斯上部署了气流,图为:稳定/气流
我也在使用这张图片:
image:
repository: apache/airflow
tag: latest
## values: Always or IfNotPresent
pullPolicy: IfNotPresent
pullSecret: ""
我将这两个变量添加到环境变量中,以改变时区:
AIRFLOW__CORE__DEFAULT_TIMEZONE: Ame
我正在使用mssqltologlecloudstorageoperator操作符从我的MSSQL服务器数据库中提取数据,我注意到如果我使用[table_name]中的SELECT*查询具有datetime字段的表,我的任务将以失败告终
ERROR - Object of type datetime is not JSON serializable
唯一的一轮是指定我想要的字段,即使在这种情况下,如果有一个datetime字段NULL我也会得到相同的错误。有没有关于如何修复此问题的线索?这是当前
通常,我下载的文件在文件名中有一个日期
csat_surveys_2017_03_05.csv
03062017_roster.csv
我的代码单独处理这个问题
将已处理文件列表中的日期(基于文件名切片)与应该存在的预期日期(某些日期范围直到当前日期)进行比较
对于我处理的每个文件,将文件名添加到数据库表中,并且只处理尚未添加到该表中的新文件
我是否可以(也应该)使用气流计划日期来代替必须编码此逻辑的需要?每天,我的任务都按计划运行。我选择那个预定的日期(可能是减去1天),并使用该值作为参
我有一个DAG计划每天运行。在大多数情况下,只要执行日期完成,即第二天,调度程序就会触发此作业。但是,由于上游延迟,我只想在执行日期三天后启动执行日期的dag运行。换句话说,我想引入三天的延迟
根据我所做的研究,一种方法是在我的dag运行开始时使用delta=datetime.timedelta(days=3)添加一个TimeDeltaSensor
然而,由于气流调度器的实现方式,这是有问题的。在这种方法下,我的每次DAG运行都将持续三天以上。我的DAG有很多任务,如果有几个DAG运行处于活动状
我使用bash操作符来安排容器在计算实例上运行
gcloud beta compute instances create-with-container airflow-vm --zone us-central1-a --container-image gcr.io/cloud-marketplace/google/image-which-does-calculations:1.0
容器会自动启动一个进程来进行一些计算。如何检测流程是否已完成计算?我可能会让我的GCE实例写入GCS并使用GCS传
我有一个作业,它使用ds变量来协调它处理的工作量,并计划每天使用@daily运行
select * from events
where date = '{{ ds }}';
但是,我想写一个新版本,它是@monthly。我不需要做太多更改,但我需要访问下一次运行的日期戳,以便干净地将其移植过来
select * from events
where
date >= '{{ ds }}'
and
date < '{{ macros.ds_add(ds, 32) }}';
我该如何实现
我有一个控制dag,它会触发另外两个dag。两个DAG应顺序运行,而不是并行运行。
我试着这样解决问题:
TriggerDag (using BashOp) -> ExternalDagSensor -> TriggerDag (using BashOp) -> ExternalDagSensor.
我的问题是,触发的DAG确实获得了一个特定的执行日期(具体到秒,而不是分钟和秒的00:00)。dag传感器现在使用控制dag的执行时间戳取从属dag,因此传感器永远不会被触发,因
我试图在我的DAG中调用shell脚本,并传递下面提到的几个参数
def load_data_parameters():
today_date = '{{ ds }}'
environment = config.get('common', 'env')
return today_date,environment
today_date,environment = load_data_parameters()
EdgeToRaw_Command ="./scripts/tes
我在Apache Airflow中设置弹性日志时遇到一些问题。
自版本1.10以来,弹性日志记录已添加到配置中
查看afflow.cfg文件时,我们有两个与弹性相关的部分:
# Airflow can store logs remotely in AWS S3, Google Cloud Storage or Elastic Search.
# Users must supply an Airflow connection id that provides access to the stora
我有一份有三项任务的工作
1) 使用POST请求获取令牌
2) 获取令牌值并存储在变量中
3) 使用步骤2中的令牌发出GET请求,并传递承载令牌
问题是步骤3不起作用,我收到HTTP错误。我能够在步骤2中打印令牌的值,并在代码中进行验证
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': airflow.utils.dates.days_ago(2),
'emai
标签: Airflow
directed-acyclic-graphs
我有一个Apache Airflow DAG,如下所示:
DAG_NAME='my_dag'
sections = ["0", "1", "2", "3"]
with DAG(DAG_NAME, default_args=default_args, schedule_interval=None) as dag:
for s in sections:
a = DummyOpe
标签: Airflow
airflow-scheduleralteryxairflow-operator
是否有人写信或知道Alteryx气流操作员的下落?尝试自动执行现有Alteryx工作流,通常手动执行。如果这有帮助的话,Airflow和Alteryx都位于on-prem数据中心的同一防火墙后面
**由于超出此问题范围的原因,我认识到除了Airflow之外,还有其他更好的启动Alteryx工作流的方法。目前没有Airflow操作员可以在Windows上直接执行Alteryx工作流。但是,使用现有的PythonOperator和Python库,如pypsrp和pywinrm,可以远程进入操作Alt
我有这个问题。我更改了DAG工作流,以另一个任务替换on任务。但被替换的任务似乎仍在反映,但不是工作流的一部分。请参见图片。我的问题是,如何完成这项任务
非常感谢您的帮助。谢谢 我认为最好的办法是关闭DAG,重新启动调度程序,或者用气流调度程序启动它,然后等待。通常,DAG中的更改仅在调度程序运行一段时间后才会拾取
另外,在刷新DAG的图形视图或树视图时,您可能会看到任务随机出现和消失,直到它最终稳定在最新版本
经过一些调度程序周期后,刷新后,您只能看到新的配置,您可以安全地重新打开DAG。将注
我有6个任务(t1、t2、t3、t4、t5和t6)同时运行
这些任务以t1>>t2>>t3>>t4>>t5>>t6的形式运行
在某个点t3出现问题,然后t4未执行,或者任何任务出现问题,然后后面的任务未执行
请告诉我如何避免这个问题。我不希望其他任务等待较早的任务完成。如果之前的任务没有在5分钟内完成,则应跳过。您的工作流连接方式不符合您的要求
不应该将相互依赖的任务连接在一起。我见过一些人这样做只是为了限制外部系统的负载;但对于这种用例,必须使用
如果希望任务在给定间隔后超时(以便下游任务可
我试图在气流中设置一个变量,它的值中包含一个空格。
以下命令均无效
/home/airflow/exec airflow variables -s var_name "var value"
/home/airflow/exec airflow variables -s var_name 'var value'
/home/airflow/exec airflow variables -s var_name var value
错误-
airflow: error: unrecognize
我对使用手动触发dag时使用参数感兴趣
在我的例子中,参数应该是days_of_data,它应该是7,除非我们在手动触发中将参数作为JSON传递。因此,我们可以手动触发dag,如果没有传递任何参数,它的值无论如何都是7。首先,确保参数days\u是您调用的运算符中的模板字段。之后,只需在运算符中设置默认值,如下所示:
"{{ dag_run.conf['days_of_data'] or 7 }}"
这将把days\u of_data设置为7,除非在手动执行DAG时(从CL
气流是否支持按操作员类型限制的节流或平行度。
我想限制不同DAG之间spark提交的数量,但最终不会限制不同DAG之间的并行性。如果要使用气流池。有关详细信息,请参阅:
简言之,池所做的就是限制可用于运行任务的可用插槽数量。在您的情况下,您可以对有问题的操作符进行子类化,并为它们提供特定池实例的默认池参数,以便让开发人员朝着正确的方向前进。请参阅群集策略
标签: Airflow
airflow-schedulerairflow-operatorairflow-worker
我正在AWS ECS上运行一个Airflow实例。效果很好。然而,到最近为止,多租户的需求已经出现。我激活了webserver:filter\u by\u owner,我的不同团队现在无法看到彼此的DAG。太棒了
然而,我意外地注意到,没有任何东西可以阻止团队A使用一个由团队B使用的connectionId
在我的示例中,我运行Airflow来编排Snowflake中的一些SQL。例如:
with DAG("TEST_Dag", default_args=config.def
我在SubDagOperator函数中传递一组参数,然后调用Pythonprerator,但是Jinja模板或宏没有得到渲染
file\u check=subdag运算符(
任务id=子任务id,
subdag=加载\子\ dag(
dag_id=“%s.%s%”(dag_id,子dag_任务id),
params={
“国家”:[“SG”],
“日期”:“{execution_date.strftime(“%Y%m%d”)}”,
“poke_间隔”:60,
“超时”:60*5
},
开始日期=
我正在利用Airflow v1.7.1.3提供对Airflow.cfg的访问,将一些配置值放在那里,而不是嵌入代码中。我们添加了以下内容作为afflow.cfg文件的第一行:
[foo]
bar = foo
bar
在代表DAG的foobarDAG.py类中,我执行以下操作:
from airflow.configuration import conf
…
def fooBar():
pass
foobarList = conf['foo']['bar'].split('
我有达格素数和达格三级
dag_prime:扫描目录并打算调用dag_prime
每一个都有。目前是一名蟒蛇操作员
dag_第三方:扫描传递给它的目录,并对其中的内容进行计算(可能需要大量时间)
我可以从python操作符的系统调用中调用第二个,但我觉得应该有更好的方法。如果有一个简单的方法,我也愿意考虑排队DaGyError调用。有没有比使用系统调用更好的方法
谢谢 使用aiffort.operators.trigger_dagrun从一个DAG调用另一个DAG
有关详细信息,请参阅ope
标签: Airflow
apache-airflowairflow-scheduler
我在XCOM中有一个巨大的json文件,在dag执行完成后我不需要这个文件,但我仍然可以在UI中看到包含所有数据的XCOM对象,是否有任何方法可以在dag运行完成后以编程方式删除XCOM
谢谢您必须添加一个任务,该任务取决于您的metadatadb(sqllite、PostgreSql、MySql…),它在DAG运行完成后删除XCOM
delete_xcom_task = PostgresOperator(
task_id='delete-xcom-task',
post
我找不到cloud ML引擎+气流的教程,请有人帮助部署一个云ml引擎模型,并与airflow协调,以每小时使用新数据运行培训这里有一个包含ml引擎和Composer的教程:这里有一个包含ml引擎和Composer的教程:您可以使用可用的Composer quick start和airflow ml来安排ml引擎作业发动机操作员文档。当您在MLEngine上培训作业时,模型包将在GCS上创建,甚至可以手动创建。如果您打算进行超参数优化,那么您的软件包将需要包含前面提到的setup.py
下面是i
我从日志中看到以下信息:
[2019-02-28 16:33:14766]{python_operator.py:95}信息-导出以下环境变量:
AIRFLOW_CTX_DAG_ID=email_operator_with_log_attachment_example
AIRFLOW_CTX_EXECUTION_DATE=2019-02-28T21:32:51.357255+00:00
AIRFLOW_CTX_TASK_ID=python_send_email
AIRFLOW_CTX_DAG_R
任务a>任务b>任务c
如果C失败,我想重试A。这可能吗?还有一些其他的票,其中涉及subdag,但我想只是能够清除a
我希望在任务C中使用on_retry_callback,但我不知道如何调用任务A
还有一个问题是在子DAG中实现这一点,但我没有使用子DAG
我正试图这样做,但似乎不起作用:
def callback_用于_故障(上下文):
打印(“***重试***”)
如果上下文['task']。上游_列表:
上下文['task']。上游_列表[0]。清除()
我不再相信这是很容易做到的。我
我不熟悉airflow,尝试通过启动airflow Web服务器和调度器来运行dag。关闭调度器和airflow Web服务器后,airflow进程仍在运行
ps aux | grep AIFLOW显示2个AIFLOW Web服务器正在运行,调度程序正在为所有DAG运行
我试着运行kill$(ps aux | grep aiffort | awk'{print$2}'),但没有任何帮助
我没有sudo权限和Web服务器UI访问权限。
如果在本地运行气流,并使用两个命令启动气流调度器和气流Web服
上一页 1 2 ...
6 7 8 9 10 11 12 ...
下一页 最后一页 共 41 页