2017-02-15 3 views
4

Ich habe gerade begonnen Apache Luftstrom zu verwenden. Ich versuche, test.sh-Datei von der Luftströmung zu laufen, aber es ist nicht Arbeit.BashOperator läuft nicht Bash Datei Apache Luftstrom

Im Anschluss an mein Code, Dateiname test.py

import os 
from airflow import DAG 
from airflow.operators.bash_operator import BashOperator 
from datetime import datetime, timedelta 


default_args = { 
    'owner': 'airflow', 
    'depends_on_past': False, 
    'start_date': datetime(2015, 6, 1), 
    'email': ['[email protected]'], 
    'email_on_failure': False, 
    'email_on_retry': False, 
    'retries': 1, 
    'retry_delay': timedelta(minutes=5), 
    # 'queue': 'bash_queue', 
    # 'pool': 'backfill', 
    # 'priority_weight': 10, 
    # 'end_date': datetime(2016, 1, 1), 
} 

dag = DAG('test', default_args=default_args) 

# t1 and t2 are examples of tasks created by instantiating operators 
t1 = BashOperator(
    task_id='print_date', 
    bash_command='date', 
    dag=dag) 

create_command = "sh home/ubuntu/test/inst/scripts/test.sh" 

if os.path.exists(create_command): 
    t2 = BashOperator(
     task_id= 'cllTest', 
     bash_command=create_command, 
     dag=dag 
    ) 
else: 
    raise Exception("Cannot locate {}".format(create_command)) 

t2.set_upstream(t1) 

ist, wenn ich Python ~/Airflow/dags/test.py laufen, ist es kein Fehler wirft.

jedoch Wenn ich Luftstrom list_dag laufen, wirft es Fehler folgende:

[2017-02-15 20:20:02,741] {__init__.py:36} INFO - Using executor SequentialExecutor 
[2017-02-15 20:20:03,070] {models.py:154} INFO - Filling up the DagBag from /home/ubuntu/airflow/dags 
[2017-02-15 20:20:03,135] {models.py:2040} ERROR - sh home/ubuntu/test/inst/scripts/test.sh 
Traceback (most recent call last): 
    File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/airflow/models.py", line 2038, in resolve_template_files 
    setattr(self, attr, env.loader.get_source(env, content)[0]) 
    File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/jinja2/loaders.py", line 187, in get_source 
    raise TemplateNotFound(template) 
TemplateNotFound: sh home/ubuntu/test/inst/scripts/test.sh 

ich versucht habe How to run bash script file in Airflow für Antwort auf verwendet, ist es nicht

Wo ich Fehler mache funktioniert?

Antwort

5

nach einem Raum hinzufügen .sh es im confluence page der Luftstrom

erwähnt wird dies funktionieren sollte
t2 = BashOperator(
task_id='sleep', 
bash_command="/home/batcher/test.sh", // This fails with `Jinja template not found` error 
#bash_command="/home/batcher/test.sh ", // This works (has a space after) 
dag=dag) 
0

Versuchen ohne die "sh" gesetzt einfach den Befehl "Start/ubuntu/test/inst/scripts/test.sh"

0

Verwendung nur der Weg Skript, ohne "sh": create_command = „/ home/ubuntu/test/inst/scripts/test.sh "

stellen Sie auch sicher, dass" Luftstrom "Benutzer Berechtigungen zum Ausführen von" test.sh "Skript hat.

Verwandte Themen