Lectura desde tablas de JDBC en paralelo - AWS Glue

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Lectura desde tablas de JDBC en paralelo

Puede establecer las propiedades de su tabla de JDBC para permitir a AWS Glue leer datos en paralelo. Cuando establece determinadas propiedades, le indica a AWS Glue que ejecute consultas SQL en paralelo en particiones lógicas de sus datos. Puede controlar la partición mediante el establecimiento de un campo hash o una expresión hash. También puede controlar el número de lecturas en paralelo que se utilizan para obtener acceso a los datos.

La lectura paralela de tablas JDBC es una técnica de optimización que puede mejorar el rendimiento. Para obtener más información sobre el proceso de identificación de cuándo esta técnica es adecuada, consulte Reducir la cantidad de datos escaneados en la guía de Prácticas recomendadas para el ajuste del rendimiento de AWS Glue para trabajos de Apache Spark en las Recomendaciones de AWS.

Para habilitar las lecturas en paralelo, puede establecer pares clave-valor en el campo de parámetros de la estructura de tabla. Utilice la notación JSON para establecer un valor del campo de parámetros de la tabla. Para obtener más información acerca de la edición de las propiedades de una tabla, consulte Visualización y administración de los detalles de la tabla. También puede habilitar lecturas en paralelo cuando llama a los métodos de ETL (extraer, transformar y cargar) create_dynamic_frame_from_options y create_dynamic_frame_from_catalog. Para obtener más información sobre cómo especificar opciones en estos métodos, consulte from_options y from_catalog.

Puede utilizar este método para tablas de JDBC, es decir, la mayoría de tablas de datos cuya datos base es un almacén de datos de JDBC. Estas propiedades se ignoran cuando se leen las tablas de Amazon Redshift y Amazon S3.

hashfield

Establezca hashfield como el nombre de una columna de la tabla de JDBC que se va a utilizar para dividir los datos en particiones. Para obtener los mejores resultados, esta columna debe tener una distribución uniforme de valores para distribuir los datos entre particiones. Esta columna pueden ser de cualquier tipo de datos. AWS Glue genera consultas no solapadas que se ejecutan en paralelo para leer los datos particionados por esta columna. Por ejemplo, si los datos están distribuidos de manera uniforme por mes, puede utilizar la columna month para leer cada mes de datos en paralelo.

'hashfield': 'month'

AWS Glue crea una consulta para aplicar la función hash en el valor del campo y convertirlo en un número de partición, y ejecuta la consulta para todas las particiones en paralelo. Para utilizar su propia consulta para dividir la lectura de una tabla, proporcione hashexpression en lugar de hashfield.

hashexpression

Establezca hashexpression como una expresión SQL (que cumpla la gramática del motor de base de datos JDBC) que devuelve un número entero. Una expresión simple es el nombre de cualquier columna numérica en la tabla. AWS Glue genera consultas SQL para leer los datos de JDBC en paralelo mediante hashexpression en la cláusula WHERE para dividir los datos.

Por ejemplo, utilice la columna numérica customerID para leer los datos particionados por un número de cliente.

'hashexpression': 'customerID'

Para que AWS Glue controle la partición, proporcione hashfield en lugar de hashexpression.

hashpartitions

Establezca hashpartitions como el número de lecturas en paralelo de la tabla de JDBC. Si no se define esta propiedad, el valor predeterminado es 7.

Por ejemplo, establezca el número de lecturas en paralelo en 5, de modo que AWS Glue lea los datos con cinco consultas (o menos).

'hashpartitions': '5'