Pianificazione dei notebook Jupyter su Meta

Blog

CasaCasa / Blog / Pianificazione dei notebook Jupyter su Meta

Jul 21, 2023

Pianificazione dei notebook Jupyter su Meta

In Meta, Bento è la nostra piattaforma interna per notebook Jupyter utilizzata da molti utenti interni. I notebook vengono ampiamente utilizzati anche per la creazione di report e flussi di lavoro (ad esempio, esecuzione

In Meta, Bento è la nostra piattaforma interna per notebook Jupyter utilizzata da molti utenti interni. I notebook vengono ampiamente utilizzati anche per creare report e flussi di lavoro (ad esempio, eseguire l'ETL dei dati) che devono essere ripetuti a determinati intervalli. Gli utenti con tali notebook dovrebbero ricordarsi di eseguire manualmente i propri notebook alla cadenza richiesta, un processo che le persone potrebbero dimenticare perché non si adatta al numero di notebook utilizzati.

Per risolvere questo problema, abbiamo investito nella creazione di un'infrastruttura di notebook pianificati che si adatti perfettamente al resto degli strumenti interni disponibili in Meta. Investire nelle infrastrutture aiuta a garantire che la privacy sia inerente a tutto ciò che costruiamo. Ci consente di continuare a creare soluzioni innovative e preziose nel rispetto della privacy.

La capacità di rispondere in modo trasparente alle domande sul flusso di dati attraverso i sistemi Meta ai fini della privacy dei dati e del rispetto delle normative differenzia l'implementazione dei nostri notebook programmati dal resto del settore.

In questo post, spiegheremo come abbiamo sposato Bento con il nostro framework di pipeline ETL batch chiamato Dataswarm (si pensi ad Apache Airflow) in modo consapevole della privacy e del lignaggio.

In Meta, ci impegniamo a migliorare la fiducia nella produzione eseguendo analisi statiche su artefatti pianificati e mantenendo narrazioni coerenti attorno ai flussi di dati sfruttando operatori Dataswarm trasparenti e annotazioni di dati. I notebook rappresentano una sfida speciale perché:

Queste tre considerazioni hanno modellato e influenzato le nostre decisioni di progettazione. In particolare, abbiamo limitato i notebook che possono essere pianificati a coloro che eseguono principalmente ETL e a coloro che eseguono trasformazioni di dati e visualizzano visualizzazioni. I notebook con altri effetti collaterali non rientrano attualmente nell'ambito e non possono essere pianificati.

Esistono tre componenti principali per supportare i notebook pianificati:

Per risolvere la maggior parte dei problemi sopra evidenziati, eseguiamo lo stato di esecuzione del notebook in un contenitore senza accesso alla rete. Sfruttiamo anche le annotazioni dei dati di input e output per mostrare il flusso di dati.

Per ETL, recuperiamo i dati e li scriviamo in un modo nuovo:

Abbiamo integrato BentoOperator all'interno della struttura dello scopo dei dati di Meta per garantire che i dati vengano utilizzati solo per lo scopo previsto. Questo framework garantisce che lo scopo di utilizzo dei dati venga rispettato mentre i dati fluiscono e si trasmutano nello stack di Meta. Come parte della pianificazione di un notebook, l'utente fornisce una "zona politica di scopo" che funge da punto di integrazione con il framework dello scopo dei dati.

Esploriamo ora il flusso di lavoro per la pianificazione di un notebook:

Abbiamo esposto il punto di ingresso della pianificazione direttamente dall'intestazione del notebook, quindi tutto ciò che gli utenti devono fare è premere un pulsante per iniziare.

Il primo passaggio nel flusso di lavoro consiste nell'impostare alcuni parametri che verranno utilizzati per generare automaticamente la pipeline per la pianificazione.

Il passaggio successivo prevede l'anteprima della pipeline generata prima della creazione di un confronto Phabricator (lo strumento di revisione delle differenze di Meta).

Oltre al codice della pipeline per l'esecuzione del notebook, anche il notebook stesso viene archiviato nel controllo del codice sorgente in modo che possa essere rivisto. Nel piano di test sono inclusi anche i risultati del tentativo di eseguire il notebook in una configurazione pianificata.

Una volta che il differenziale è stato rivisto e ottenuto, il programma inizia a funzionare il giorno successivo. Nel caso in cui l'esecuzione del notebook fallisca per qualsiasi motivo, il proprietario della pianificazione viene automaticamente avvisato. Abbiamo anche creato un'estensione del riquadro contestuale direttamente in Bento per facilitare il debug delle esecuzioni dei notebook.

Sebbene abbiamo affrontato la sfida di supportare i notebook pianificati nel rispetto della privacy, i notebook che rientrano nell'ambito della pianificazione sono limitati a quelli che eseguono ETL o quelli che eseguono analisi dei dati senza altri effetti collaterali. Questa è solo una frazione dei notebook che gli utenti desiderano eventualmente pianificare. Per aumentare il numero di casi d'uso, investiremo nel supporto di altre origini dati trasparenti oltre alla cella SQL.