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