0 / 0

Gestione delle prestazioni del lavoro

Ultimo aggiornamento: 07 ott 2024
Gestione delle prestazioni del lavoro

I flussi di mascheramento, che copiano e mascherano i dati, possono essere implementati utilizzando Spark. Tuttavia, Spark ha diverse caratteristiche e limitazioni che influenzano le prestazioni del lavoro del flusso di mascheramento e possono causare errori del lavoro.

Gestione degli errori dei lavori

Durante un lavoro di mascheramento del flusso, Spark potrebbe tentare di leggere tutte le origini dati nella memoria. Pertanto, i lavori di mascheramento del flusso possono rilevare errori dovuti a condizioni di memoria esaurita. Il volume massimo di dati che può adattarsi al nodo di elaborazione Spark distribuito più grande è di circa 12GBs. Perché un flusso di mascheramento sia in grado di copiare e mascherare più di questo volume di dati, il motore Spark deve essere in grado di suddividere i dati in blocchi più piccoli. Spark può quindi elaborare ogni blocco separatamente e in parallelo con altri blocchi.

Ci sono alcune origini dati, come i file Parquet, in cui Spark può partizionare automaticamente i dati. Tuttavia, nessuna di queste origini dati è supportata dai flussi di mascheramento.

Un'alternativa è quella di specificare una colonna di indice quando si crea un flusso di mascheramento per consentire a Spark di partizionare i dati.   Per le origini dati relazionali attualmente supportate, il primo passo consiste nel trovare o creare una colonna di indice che divide i dati in porzioni approssimativamente uguali.  Il passo successivo è quello di fornire un nome colonna nell'indice in modo che Spark possa creare una query che utilizzerà l'indice. Il flusso di mascheramento rileva e fornisce automaticamente altri dati richiesti da Spark: i valori minimo e massimo della colonna e il numero di partizioni di dati da utilizzare.

Best practice

Per ottenere risultati ottimali, i dati nella colonna di partizionamento devono essere distribuiti in modo uniforme. Lo scopo di una colonna di partizione è quello di consentire a Spark di dividere i dati in parti considerevoli per l'elaborazione. Ad esempio, se i dati sono 10 TB divisi per 50 bucket, ogni blocco è ancora 0.2 TB. Maggiore è il numero di bucket, più veloce è l'elaborazione.

Scegliere una colonna di partizione, in cui i valori sono distribuiti in modo uniforme su un ampio intervallo. Le colonne di identificatori sono spesso scelte valide. Ad esempio, una tabella Clienti ha una colonna Customer_ID contenente 1.5 M ID univoci. Una colonna di stato non è un buon esempio perché ci sono solo 50 valori univoci.

Ulteriori informazioni

Argomento principale Esecuzione di lavori di flusso di mascheramento