Back

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:

  1. Accedi alla tua interfaccia web di Airflow.
  2. Vai alla sezione Admin > Connections.
  3. Fai clic su “Create” per aggiungere una nuova connessione.
  4. 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.
  5. 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.

Configurazione delle connessioni in Apache Airflow

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