Les flux de masquage, qui copient et masquent les données, peuvent être implémentés à l'aide de Spark. Cependant, Spark possède diverses caractéristiques et limitations qui affectent les performances des travaux de flux de masquage et peuvent entraîner des échecs de travaux.
Gestion des échecs de travail
Lors d'un travail de masquage de flux, Spark peut tenter de lire la totalité d'une source de données en mémoire. Par conséquent, les travaux de flux de masquage peuvent faire l'expérience d'erreurs dues à des conditions de mémoire hors de la mémoire. Le plus grand volume de données pouvant tenir dans le plus grand noeud de traitement Spark déployé est d'environ 12 Go. Pour qu'un flux de masquage puisse copier et masquer plus que ce volume de données, le moteur Spark doit pouvoir partitionner les données en blocs plus petits. Spark peut ensuite traiter chaque bloc séparément et en parallèle avec d'autres blocs.
Il existe certaines sources de données, telles que les fichiers Parquet, où Spark peut partitionner automatiquement les données. Cependant, aucune de ces sources de données ne sont prises en charge par les flux masquants maintenant.
Une alternative consiste à spécifier une colonne d'index lorsque vous créez un flux de masquage pour permettre à Spark de partitionner les données. Pour les sources de données relationnelles actuellement prises en charge, la première étape consiste à rechercher ou à créer une colonne d'index qui divise les données en portions à peu près égales. L'étape suivante consiste à fournir un nom de colonne dans l'index afin que Spark puisse créer une requête qui utilisera l'index. Le flux de masquage va automatiquement découvrir et fournir d'autres données requises par Spark : les valeurs minimale et maximale de la colonne et le nombre de partitions de données à utiliser.
Meilleures pratiques
Pour les meilleurs résultats, les données de la colonne de partitionnement doivent être distribuées également. L'objectif d'une colonne de partition est de permettre à Spark de diviser les données en pièces importantes pour le traitement. Par exemple, si les données sont de 10 To divisé par 50 compartiments, chaque bloc est toujours de 0,2 To. Plus le nombre de compartiments est élevé, plus le traitement est rapide.
Choisissez une colonne de partition, où les valeurs sont réparties également sur une grande plage. Les colonnes d'identification sont souvent de bons choix. Par exemple, un tableau Clients comporte une colonne Customer_ID contenant 1,5 M d'ID uniques. Une colonne d'état n'est pas un bon exemple car il n'y a que 50 valeurs uniques.
En savoir plus
Rubrique parent : Exécution de travaux de flux de masquage