Google Cloud Composer(GCP Composer)是一个基于Apache Airflow的工作流调度系统,用于创建、调度和监控复杂的数据工作流。DAG(Directed Acyclic Graph,有向无环图)是Composer中定义工作流的方式。
Compute Engine VM(虚拟机)是Google Cloud Platform(GCP)提供的一种基础设施服务,允许用户在Google的基础设施上运行虚拟机。
在Composer中执行Bash脚本可以通过以下几种方式实现:
在数据处理、ETL(Extract, Transform, Load)任务、机器学习工作流等场景中,经常需要在Composer中执行Bash脚本。
假设我们有一个Bash脚本script.sh
位于Compute Engine VM的/path/to/script.sh
路径下,我们可以通过以下几种方式在Composer中执行这个脚本。
from airflow import DAG
from airflow.providers.google.cloud.operators.bash import BashOperator
from datetime import datetime
default_args = {
'owner': 'airflow',
'start_date': datetime(2023, 1, 1),
}
dag = DAG(
'execute_bash_script',
default_args=default_args,
schedule_interval='@daily',
)
bash_task = BashOperator(
task_id='run_bash_script',
bash_command='gcloud compute ssh vm-instance --zone us-central1-a --command "/path/to/script.sh"',
dag=dag,
)
from airflow import DAG
from airflow.providers.google.cloud.operators.compute import ComputeEngineOperator
from airflow.operators.python_operator import PythonOperator
from datetime import datetime
default_args = {
'owner': 'airflow',
'start_date': datetime(2023, 1, 1),
}
dag = DAG(
'execute_bash_script',
default args=default_args,
schedule_interval='@daily',
)
def run_bash_script():
import subprocess
subprocess.run(['gcloud', 'compute', 'ssh', 'vm-instance', '--zone', 'us-central1-a', '--command', '/path/to/script.sh'])
python_task = PythonOperator(
task_id='run_bash_script',
python_callable=run_bash_script,
dag=dag,
)
通过以上方法,你可以在GCP Composer中成功执行位于Compute Engine VM中的Bash脚本。
领取专属 10元无门槛券
手把手带您无忧上云