web-dev-qa-db-fra.com

Comment obtenir et traiter des enregistrements mysql à l'aide d'Airflow?

J'ai besoin de

1. run a select query on MYSQL DB and fetch the records.              
2. Records are processed by python script.

Je ne suis pas sûr de la façon dont je dois procéder. Est-ce que xcom est le chemin à parcourir ici? En outre, MYSQLOperator exécute uniquement la requête, ne récupère pas les enregistrements. Y a-t-il un opérateur de transfert intégré que je peux utiliser? Comment puis-je utiliser un crochet MYSQL ici?

vous souhaiterez peut-être utiliser un PythonOperator qui utilise le hook pour récupérer les données, appliquer la transformation et renvoyer les lignes (désormais notées) à un autre endroit.

Quelqu'un peut-il expliquer comment procéder à ce sujet?.

Reportez-vous - http://markmail.org/message/x6nfeo6zhjfeakfaste

def do_work():
    mysqlserver = MySqlHook(connection_id)
    sql = "SELECT * from table where col > 100 "
    row_count = mysqlserver.get_records(sql, schema='testdb')
    print row_count[0][0]

callMYSQLHook = PythonOperator(
    task_id='fetch_from_testdb',
    python_callable=mysqlHook,
    dag=dag
)

Est-ce la bonne façon de procéder? De plus, comment utilisons-nous les xcom pour stocker les enregistrements pour le MySqlOperator suivant? '

t = MySqlOperator(
conn_id='mysql_default',
task_id='basic_mysql',
sql="SELECT count(*) from table1 where id > 10",
dag=dag)
14
gpk27

Bien sûr, créez simplement un hook ou un opérateur et appelez la méthode get_records (): https://airflow.readthedocs.io/en/stable/_modules/airflow/hooks/dbapi_hook.html

1
Breathe