Ler arquivos de entrada em grupos maiores - AWS Glue

Ler arquivos de entrada em grupos maiores

Você pode definir as propriedades das tabelas para habilitar um trabalho de ETL do AWS Glue a fim de agrupar arquivos quando eles são lidos em um armazenamento de dados do Amazon S3. Essas propriedades permitem que cada tarefa de ETL leia um grupo de arquivos de entrada em uma única partição na memória. Isso é especialmente útil quando há um grande número de arquivos pequenos no armazenamento de dados do Amazon S3. Ao definir determinadas propriedades, você instrui o AWS Glue a agrupar arquivos em uma partição de dados do Amazon S3 e a definir o tamanho dos grupos a serem lidos. Você também pode definir essas opções durante a leitura em um armazenamento de dados do Amazon S3 com o método create_dynamic_frame.from_options.

Para habilitar o agrupamento de arquivos para uma tabela, defina pares de chave/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ê pode usar esse método para habilitar o agrupamento de tabelas no Data Catalog com armazenamentos de dados do Amazon S3.

groupFiles

Defina groupFiles (agrupar arquivos) como inPartition para habilitar o agrupamento de arquivos em uma partição de dados do Amazon S3. O AWS Glue habilitará automaticamente o agrupamento se houver mais de 50.000 arquivos de entrada, como no exemplo a seguir.

'groupFiles': 'inPartition'
groupSize

Defina groupSize como o tamanho de destino de grupos em bytes. A propriedade groupSize é opcional. Se não for fornecida, o AWS Glue calculará um tamanho para usar todos os núcleos de CPU no cluster e, ao mesmo tempo, ainda reduzindo o número total de tarefas de ETL e partições na memória.

Por exemplo, o seguinte define o tamanho do grupo como 1 MB.

'groupSize': '1048576'

Observe que o groupsize deve ser definido com o resultado de um cálculo. Por exemplo 1024 * 1024 = 1048576.

recurse

Defina recursivo para True recursivamente ler arquivos em todos os subdiretórios ao especificar paths uma matriz de caminhos. Você não precisará definir recurse (recursivo) se paths for uma matriz de chaves de objeto no Amazon S3 ou se o formato de entrada for parquet/orc, como no exemplo a seguir.

'recurse':True

Se você estiver lendo no Amazon S3 diretamente usando o método create_dynamic_frame.from_options, adicione estas opções de conexão. Por exemplo, as seguintes tentativas de agrupar arquivos em grupos de 1 MB.

df = glueContext.create_dynamic_frame.from_options("s3", {'paths': ["s3://s3path/"], 'recurse':True, 'groupFiles': 'inPartition', 'groupSize': '1048576'}, format="json")
nota

Há suporte para groupFiles para DynamicFrames criados a partir dos seguintes formatos de dados: csv, ion, grokLog, json e xml. Não há suporte dessa opção para avro, parquet e orc.