Leitura de tabelas JDBC em paralelo - AWS Glue

Leitura de tabelas JDBC em paralelo

Você pode definir propriedades da sua tabela JDBC para permitir que o AWS Glue leia dados em paralelo. Ao definir determinadas propriedades, você instrui o AWS Glue a executar consultas SQL paralelas em partições lógicas dos seus dados. Você pode controlar o particionamento definindo um campo de hash ou uma expressão de hash. Você também pode controlar o número de leituras paralelas que são usadas para acessar seus dados.

Ler as tabelas JDBC em paralelo é uma técnica de otimização que pode melhorar a performance. Para obter mais informações sobre o processo para identificar quando essa técnica é adequada, consulte Reduce the amount of data scan no guia Best practices for performance tuning AWS Glue for Apache Spark jobs em AWS Prescriptive Guidance.

Para habilitar leituras paralelas, você pode definir pares de chave e valor no campo de parâmetros da estrutura da tabela. Use a notação JSON para definir um valor para o campo de parâmetro da tabela. Para obter mais informações sobre como editar as propriedades de uma tabela, consulte Exibir e gerenciar detalhes da tabela. Você também pode habilitar leituras paralelas ao chamar os métodos de ETL (extração, transformação e carregamento) create_dynamic_frame_from_options e create_dynamic_frame_from_catalog. Para obter mais informações sobre como especificar opções nesses métodos, consulte from_options e from_catalog.

Você pode usar esse método para tabelas JDBC, ou seja, a maioria das tabelas cujos dados de base são um armazenamento de dados JDBC. Essas propriedades são ignoradas durante a leitura de tabelas do Amazon RedShift e Amazon S3.

hashfield

Defina hashfield como o nome de uma coluna na tabela JDBC a ser usada para dividir os dados em partições. Para obter os melhores resultados, essa coluna deve ter uma distribuição uniforme de valores para distribuir os dados entre partições. Essa coluna pode ser de qualquer tipo de dados. O AWS Glue gera consultas não sobrepostas que são executadas em paralelo para ler os dados particionados por essa coluna. Por exemplo, se os dados estiverem distribuídos uniformemente por mês, você poderá usar a coluna month para ler cada mês de dados em paralelo.

'hashfield': 'month'

O AWS Glue cria uma consulta para definir o hash do valor do campo como um número de partição e executa essa consulta para todas as partições em paralelo. Para usar sua própria consulta para particionar uma leitura de tabela, forneça uma tabela hashexpression em vez de um hashfield.

hashexpression

Defina hashexpression como uma expressão SQL (de acordo com a gramática do mecanismo de banco de dados JDBC) que retorne um número inteiro. Uma expressão simples é o nome de qualquer coluna numérica na tabela. O AWS Glue gera consultas SQL para ler os dados JDBC em paralelo usando o hashexpression na cláusula WHERE para particionar os dados.

Por exemplo, use a coluna numérica customerID para ler dados particionados por um número de cliente.

'hashexpression': 'customerID'

Para que o AWS Glue controle o particionamento, forneça um hashfield em vez de um hashexpression.

hashpartitions

Defina hashpartitions como o número de leituras paralelas da tabela JDBC. Se essa propriedade não for definida, o valor padrão será 7.

Por exemplo, defina o número de leituras em paralelo como 5 para que o AWS Glue lê os dados com cinco consultas (ou menos).

'hashpartitions': '5'