Connessioni e Hooks in Apache Airflow
In Apache Airflow, le Connessioni e i Hooks sono componenti chiave per interagire con risorse esterne come database, API e sistemi di file. Questi strumenti ti permettono di automatizzare flussi di lavoro complessi con facilità, collegandoti a fonti di dati esterne. In questo articolo, vedremo come configurare le connessioni e utilizzare i principali hooks di Airflow per accedere a database e servizi esterni.
Cosa sono le connessioni in Apache Airflow?
Le Connessioni in Airflow rappresentano le informazioni di accesso e configurazione per connettersi a sistemi esterni come database, servizi API, cloud storage, e altro. In pratica, una connessione memorizza i dettagli come l’hostname, la porta, il nome utente, la password e altri parametri necessari per stabilire la comunicazione con un servizio esterno.
Come configurare una connessione
Puoi configurare una connessione in Apache Airflow direttamente dall’interfaccia web. Ecco i passaggi per farlo:
- Accedi alla tua interfaccia web di Airflow.
- Vai alla sezione Admin > Connections.
- Fai clic su “Create” per aggiungere una nuova connessione.
- Inserisci i dettagli della connessione, come:
- Conn Id: l’ID della connessione, che verrà utilizzato nel codice Python.
- Conn Type: il tipo di connessione (es. MySQL, Postgres, HTTP, ecc.).
- Host: l’hostname o l’indirizzo IP del servizio.
- Login e Password: credenziali di accesso al sistema.
- Salva la connessione e usala nei tuoi DAG!
Cosa sono gli Hooks in Apache Airflow?
Gli Hooks in Airflow sono classi Python che forniscono un’interfaccia per connettersi e interagire con servizi esterni come database e API. Gli hooks utilizzano le connessioni configurate per stabilire un collegamento e possono essere utilizzati all’interno dei task per eseguire query SQL, inviare richieste HTTP o gestire file nel cloud.
Utilizzare MySqlHook per connettersi a un database MySQL
Uno degli hooks più comuni è il MySqlHook, che consente di eseguire query su un database MySQL. Ecco un esempio di come utilizzare questo hook all’interno di un DAG:
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.hooks.mysql_hook import MySqlHook
from datetime import datetime
def mysql_query():
mysql_hook = MySqlHook(mysql_conn_id='my_mysql_connection')
connection = mysql_hook.get_conn()
cursor = connection.cursor()
cursor.execute('SELECT * FROM my_table')
result = cursor.fetchall()
for row in result:
print(row)
default_args = {
'owner': 'airflow',
'start_date': datetime(2024, 11, 1),
}
dag = DAG('mysql_hook_example', default_args=default_args, schedule_interval='@daily')
mysql_task = PythonOperator(
task_id='run_mysql_query',
python_callable=mysql_query,
dag=dag
)
In questo esempio, l’hook MySqlHook viene utilizzato per eseguire una query su un database MySQL collegato tramite una connessione chiamata my_mysql_connection. Il risultato della query viene stampato nel log del task.
Utilizzare HttpHook per interagire con API
L’HttpHook è utilizzato per inviare richieste HTTP a un’API. Questo hook può essere utile per automatizzare l’interazione con servizi RESTful. Ecco un esempio di utilizzo:
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.hooks.http_hook import HttpHook
from datetime import datetime
def call_api():
http_hook = HttpHook(method='GET', http_conn_id='my_api_connection')
response = http_hook.run('endpoint')
print(response.text)
default_args = {
'owner': 'airflow',
'start_date': datetime(2024, 11, 1),
}
dag = DAG('http_hook_example', default_args=default_args, schedule_interval='@daily')
http_task = PythonOperator(
task_id='call_api_task',
python_callable=call_api,
dag=dag
)
In questo esempio, l’HttpHook invia una richiesta GET all’endpoint di un’API specificata nella connessione my_api_connection e stampa la risposta.
Conclusione
Le Connessioni e Hooks di Apache Airflow ti permettono di interagire con sistemi esterni come database e API in modo semplice e strutturato. Configurando correttamente le connessioni e utilizzando gli hooks giusti, puoi automatizzare processi complessi con pochi passi. Ora che sai come configurare una connessione e utilizzare gli hooks più comuni, sei pronto per costruire flussi di lavoro avanzati.
Fonte: Documentazione ufficiale di Apache Airflow
Per altri tutorial, visita la sezione: Tutti gli articoli


