[英]GCP Composer: Run Python Script in another GCS bucket
我是 Airflow 的新手,我正在尝试运行一个 python 脚本,该脚本从 Bigquery 读取数据,进行一些预处理,然后将表导出回 Bigquery。 这是我的狗
from airflow.models import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime, timedelta
YESTERDAY = datetime.now() - timedelta(days=1)
default_args = {
'owner': 'me',
'depends_on_past': False,
'start_date': YESTERDAY,
'email': [''],
'email_on_failure': False,
'email_on_retry': False,
'retries': 0,
'max_tries': 0,
}
with DAG(
dag_id = 'my_code',
default_args = default_args,
schedule_interval = '@daily',
catchup = False
) as dag:
import data = BashOperator(
task_id = 'daily_task',
bash_command = 'python gs://project_id/folder1/python_script.py'
)
这给出了“找不到这样的文件或目录”的错误。 我没有在 Composer 中设置环境,所以我不确定它是否需要特定的凭据。 我尝试将脚本存储在 dags 文件夹中,但它无法访问 bigquery 表。
我有两个问题:
我手写了代码,因为原件在工作笔记本电脑中,我无法复制。 让我知道是否有任何错误。 谢谢!
为了解决您的问题,我向您推荐一个在我看来更易于管理的解决方案。 只要有可能,最好在 Composer's Bucket 中使用 Python 脚本。
Python
脚本复制到Composer
存储桶和DAG
文件夹中。 如果你想在DAG
中这样做,你可以从这个链接中检查Python
运算符在DAG
中调用您的Python
脚本Composer
使用的Service Account
需要具有良好的权限才能将数据读写到BigQuery
。 如果直接在DAG
中复制Python
脚本,则 SA 需要具有从项目 2 中的GCS
下载文件的权限。from your_script import your_method_with_bq_logic
with airflow.DAG(
'your_dag',
default_args=your_args,
schedule_interval=None) as dag:
bq_processing = PythonOperator(
task_id='bq_processing',
python_callable=your_method_with_bq_logic
)
bq_processing
您可以在代码中导入Python
脚本 main 方法,因为它存在于DAG
文件夹中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.