【发布时间】:2020-07-23 11:20:10
【问题描述】:
我对 Airflow 很陌生,我想知道如果我执行一个 bash 运算符,我们如何获得该运算符的控制台输出?我想知道设置xcom_push = true 能解决问题吗?
我很高兴有人能回答这个问题:)
【问题讨论】:
我对 Airflow 很陌生,我想知道如果我执行一个 bash 运算符,我们如何获得该运算符的控制台输出?我想知道设置xcom_push = true 能解决问题吗?
我很高兴有人能回答这个问题:)
【问题讨论】:
如果xcom_push 是True,那么当bash 命令完成时,只有写入stdout 的最后一行 也会被推送到XCom。
相关源码:https://github.com/apache/airflow/blob/1.10.11/airflow/operators/bash_operator.py#L167-L168
【讨论】:
添加到@kaxil 的答案(因为我没有足够的声誉来评论他的答案):
如果您的bash_command 返回多行您希望包含在 xcom 中的内容,则添加此项以在一行中返回所有内容:
bash_command="<COMMAND> | tr '\n' '||'",
【讨论】:
对于使用 Airflow 2+ 的用户,BashOperator 现在返回整个输出 (source),而不仅仅是最后一行,并且不需要指定 do_xcom_push(2+ 中的新名称而不是 xcom_push),因为它默认为真。
【讨论】: