Los flujos de enmascaramiento, que copian y enmascaran datos, se pueden implementar utilizando Spark. Sin embargo, Spark tiene varias características y limitaciones que afectan al rendimiento del trabajo de flujo de enmascaramiento y pueden provocar anomalías en el trabajo.
Gestión de errores del trabajo
Durante un trabajo de flujo de enmascaramiento, Spark puede intentar leer un origen de datos completo en la memoria. Por lo tanto, el enmascaramiento de trabajos de flujo puede experimentar errores debido a condiciones de falta de memoria. El volumen de datos más alto que puede ajustarse al nodo de proceso de Spark desplegado de mayor tamaño es de aproximadamente 12GB. Para que un flujo de enmascaramiento pueda copiar y enmascarar más de este volumen de datos, el motor de Spark debe poder particionar los datos en porciones más pequeñas. Spark puede entonces procesar cada porción por separado y en paralelo con otras porciones.
Hay algunos orígenes de datos, como los archivos Parquet, donde Spark puede particionar automáticamente los datos. Sin embargo, ninguno de estos orígenes de datos está soportado por los flujos de enmascaramiento en este momento.
Una alternativa es especificar una columna de índice al crear un flujo de enmascaramiento para permitir que Spark particione los datos. Para los orígenes de datos relacionales soportados actualmente, el primer paso es buscar o crear una columna de índice que divida los datos en porciones aproximadamente iguales. El siguiente paso es proporcionar un nombre de columna en el índice para que Spark pueda crear una consulta que utilizará el índice. El flujo de enmascaramiento descubrirá automáticamente y proporcionará otros datos que necesita Spark: los valores mínimo y máximo de la columna y el número de particiones de datos que utilizar.
Prácticas recomendadas
Para obtener mejores resultados, los datos de la columna de particionamiento deben distribuirse de forma uniforme. El objetivo de una columna de partición es permitir que Spark divida los datos en porciones de tamaño aproximadamente igual para su proceso. Por ejemplo, si los datos son 10 TB divididos por 50 grupos, cada porción sigue siendo de 0,2 TB. Cuanto mayor sea el número de grupos, más rápido será el proceso.
Elija una columna de partición, donde los valores se distribuyen uniformemente en un rango grande. Las columnas de identificador suelen ser buenas opciones. Por ejemplo, una tabla Customer tiene una columna Customer_ID que contiene 1,5 millones de ID exclusivos. Una columna de estado no es un buen ejemplo porque solo hay 50 valores exclusivos.
Más información
Tema principal: Ejecución de trabajos de flujo de enmascaramiento