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 especificarpaths
uma matriz de caminhos. Você não precisará definir recurse (recursivo) sepaths
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.