Il team di Apache Spark ha integrato l'API Pandas nell'ultima versione 3.2 del prodotto. Con questa modifica, l'elaborazione dei dataframe può essere scalata a più cluster o più processori in una singola macchina utilizzando il motore di esecuzione PySpark.
L'accelerazione della trasformazione e dell'analisi di dati multidimensionali (es. array NumPy) e tabulari (es. dataframe Pandas) in Python è un campo in rapida crescita con molti progetti in corso. Ci sono state due linee principali di strategie per risolvere i problemi di scaling, sfruttando le capacità di parallelizzazione delle GPU (es. CuPy per gli array, Rapids CuDF per i dataframe) e utilizzando più processori (es. Spark , Dask , Ray ).
L'elaborazione di grandi quantità di dati in modo distribuito utilizzando i nodi CPU consente una soluzione economica per scopi di analisi rispetto alle GPU che sono limitate dalla memoria disponibile e dal loro prezzo relativamente elevato. Essendo uno dei motori più popolari che sfruttano più cluster, Apache Spark ha mirato a diventare più Pythonic e a catturare più dell'ecosistema di data science Python con il suo Project Zen. Lo sviluppo di un'API compatibile con Pandas è stata una parte importante di questa iniziativa. Sforzi analoghi per esporre Pandas API può essere visto anche nelle librerie alternative calcolo distribuito come ad esempio a base di Dask Ray / Modin e in Apache Arrow-base Vaex.
La libreria Pandas originale non è stata progettata per ottimizzare il ridimensionamento. Come affermato dal suo creatore, sono state lasciate diverse considerazioni come le opzioni di archiviazione dei dati mappati in memoria. Tuttavia, Pandas è ancora la seconda libreria più amata nello Stack Overflow Developer Survey (2021) all'interno dell'ecosistema di calcolo numerico Python. Ciò mostra perché la standardizzazione dell'API di elaborazione dei dati tabulari può essere guidata da Pandas man mano che la sua adozione cresce.
Lo sviluppo dell'API è in corso da diversi anni in un progetto Koalas separato . Koalas è stato progettato per essere un ponte API sopra i dataframe PySpark e ha utilizzato lo stesso motore di esecuzione convertendo le istruzioni Pandas nel piano Spark SQL (Fig-1). Unendo Koala nel codebase principale di PySpark, il progetto ora punta a un porting più semplice del codice Pandas già esistente sui cluster Spark e a transizioni rapide tra le API PySpark e Pandas.
Per le prossime versioni , il team Spark mira a portare l'attuale copertura dell'83% dell'API panda al 90%, aumentare l'annotazione del tipo nella base di codice e migliorare ulteriormente le prestazioni e la stabilizzazione dell'API.
Fonte: Sabri Bolkar su Infoq.com