Come archiviare i dati storici in modo molto più efficiente |  di Tomer Gabay |  Settembre 2023

 | Intelligenza-Artificiale

Un tutorial pratico che utilizza PySpark per archiviare solo fino allo 0,01% delle righe di un DataFrame senza perdere alcuna informazione.

fotografato da Supratik Deshmukh SU Unsplash

In un’era in cui aziende e organizzazioni raccolgono più dati che mai, i set di dati tendono ad accumulare milioni di righe non necessarie che non contengono informazioni nuove o preziose. In questo articolo ci concentreremo su un aspetto critico della gestione dei dati: eliminare le righe in un set di dati se non forniscono alcun valore aggiunto, utilizzando PySpark*.

*PySpark viene utilizzato rispetto ai panda quando si ha a che fare con set di dati molto grandi perché può elaborare i dati su più computer, rendendoli più veloci e scalabili. Panda funziona bene per set di dati più piccoli che possono stare nella memoria di una singola macchina, ma potrebbe diventare lento o addirittura poco pratico per i big data.

Immaginiamo la seguente situazione: lavori come ingegnere/scienziato dei dati nel reparto manutenzione di una società immobiliare. Negli ultimi dieci anni, la tua azienda ha caricato tutti i dati di manutenzione da un database esterno contenente le condizioni dei tuoi edifici e li ha archiviati nel cloud storage dell’azienda. I dati potrebbero ad esempio assomigliare a questo:

In questo set di dati sono presenti tre colonne:

  • id -> per l’ID dell’edificio.
  • condition -> un numero intero compreso tra 1 (pessimo) e 10 (ottimo) che rappresenta lo stato dell’edificio.
  • import_date -> a appuntamento colonna che rappresenta il giorno in cui questa riga è stata importata dal software esterno.

Per creare tu stesso questo set di dati, esegui lo snippet seguente:

from pyspark.sql import SparkSession, Row
from pyspark.sql.functions as f
from pyspark.sql.types import IntegerType, DateType
import random

# set the seed to get same results when rerunning
random.seed(42)

# create a spark session
spark = SparkSession.builder.getOrCreate()

# create id list
ids = list(range(1, 11)) # Adjust this list size to meet the desired number of unique IDs

# create two possible conditions for each id
conditions = ((random.randint(1, 10) for _ in range(2)) for _ in ids)

# create a list of tuples where each tuple is a row
rows = ((id, random.choice(conditions(id-1)), date)
for id in ids…

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *