View a markdown version of this page

Migrar trabalhos do AWS Glue for Spark para o AWS Glue versão 6.0 - AWS Glue

Migrar trabalhos do AWS Glue for Spark para o AWS Glue versão 6.0

Este tópico descreve as alterações entre as versões 5.1 e 6.0 do AWS Glue, para permitir que você migre suas aplicações do Spark e trabalhos de ETL para o AWS Glue 6.0. Ele também descreve os recursos do AWS Glue 6.0 e as vantagens de usá-lo.

Para usar esse recurso com seus trabalhos de ETL do AWS Glue, escolha 6.0 para a Glue version ao criar seus trabalhos.

Novos atributos

Esta seção descreve novos recursos e vantagens do AWS Glue versão 6.0.

  • Atualização do Apache Spark versão 3.5.6 do AWS Glue 5.1 para a versão 4.1.1 no AWS Glue 6.0.

  • Atualização do Scala da versão 2.12.18 para a versão 2.13.17.

  • Atualização do Python 3.11 para a versão 3.13.

  • Open Table Formats (OTF) atualizado para as versões Hudi 1.1.1, Iceberg 1.11.0 e Delta Lake 4.2.0.

  • Formato Iceberg versão 3: estende os tipos de dados e as estruturas de metadados existentes para adicionar novos recursos, incluindo:

    • Tipo de dados VARIANT com fragmentação de variantes para permitir gerenciamento simplificado de dados semiestruturados e leituras mais rápidas.

    • Timestamps com precisão de nanossegundos.

    • Tipos de dados geoespaciais (Geometry e Geography).

  • Spark Declarative Pipelines (SDP): uma nova estrutura declarativa para definir pipelines de dados de ponta a ponta usando API SQL ou DataFrame, compatível com tabelas de streaming e visualizações materializadas. Para obter mais informações, consulte Spark Declarative Pipelines.

  • Spark Connect para sessões interativas: permite a conectividade de thin client com sessões interativas do AWS Glue por meio do protocolo Spark Connect, compatível com fluxos de trabalho de desenvolvimento remoto.

  • UDFs/UDTFs Python nativos em Arrow: performance aprimorada para funções definidas pelo usuário do Python usando o formato colunar Apache Arrow de modo nativo.

  • Ambiente virtual Python gerenciado pelo cliente ou gerado pelo serviço (--python-virtual-env): é possível criar e fornecer seu próprio venv Python que o AWS Glue conecta aos drivers e executores do Spark no runtime, fornecendo controle total sobre o gerenciamento das dependências. Quando as trabalhos existentes são migradas para o AWS Glue 6.0, o AWS Glue gera automaticamente esse ambiente virtual, se necessário.

  • Aprimoramentos de streaming: modo de tempo real para streaming sem estado com latência de milissegundos. Para obter mais informações, consulte Habilitar o modo de tempo real para trabalhos de streaming.

  • Atualizações de conectores: Amazon Redshift, MongoDB, Snowflake e outros conectores atualizados. Consulte Apêndice C: Atualizações de conectores para obter os detalhes completos da versão.

Problemas conhecidos e limitações

Atenção para os seguintes problemas e limitações conhecidos:

  • O modo ANSI é habilitado por padrão no Spark 4.1. As operações que anteriormente retornavam NULL quando ocorria um transbordamento (por exemplo, operações aritméticas com números inteiros, operações de conversão) agora geram exceções. Defina spark.sql.ansi.enabled=false para restaurar o comportamento anterior.

  • O Spark Declarative Pipelines (SDP) é um novo atributo com compatibilidade limitada para determinados constructos SQL. Consulte a documentação dos Spark Declarative Pipelines para ver as limitações atuais.

  • As tabelas Iceberg v3 criadas na AWS Glue versão 6.0 não podem ser lidas pelo Athena SQL (erro: Cannot read unsupported version 3). Use o Iceberg v2 para garantir compatibilidade intermecanismo com o Athena.

  • O Python 3.13 remove vários módulos obsoletos e altera o comportamento de algumas funções de biblioteca padrão. Consulte o guia de migração do Python 3.13 para verificar a compatibilidade.

  • Compatibilidade do AWS SDK para Java 2.x com --user-jars-first: o AWS Glue 6.0 inclui o AWS SDK para Java 2.x versão 2.44.6. Se você usar o parâmetro de trabalho --user-jars-first com um JAR personalizado que empacote uma versão mais antiga do AWS SDK para Java 2.x, poderá haver falha no trabalho com um erro java.lang.NoSuchFieldError ou outro erro semelhante. Essas falhas ocorrem quando o SDK empacotado em seu JAR personalizado não tem classes, campos ou métodos dos quais o runtime do AWS Glue depende. Para evitar esse problema, certifique-se de que qualquer JAR personalizado fornecido com --user-jars-first use o AWS SDK para Java 2.x versão 2.44.6 ou posterior.

Alterações que podem causar interrupções

Observe as seguintes alterações importantes:

  • O EMRFS foi removido. O S3A é o único sistema de arquivos do S3 no AWS Glue 6.0. A classe com.amazon.ws.emr.hadoop.fs.EmrFileSystem não está mais disponível. Os trabalhos que usam caminhos s3:// usam o S3A automaticamente. Se você definiu anteriormente configurações específicas do EMRFS (por exemplo, fs.s3.consistent.*), remova-as.

  • O AWSSDK for Java v1 foi removido. Somente o AWS SDK v2 (2.44.6) está disponível. Os trabalhos que importam pacotes do com.amazonaws.services.* devem ser migrados para os software.amazon.awssdk.services.*.

  • Atualização do Scala da versão 2.12 para a versão 2.13. JARs personalizados compilados com o Scala 2.12 não funcionam. Recompile com o Scala 2.13.17. Principais alterações: JavaConversions removidas (use CollectionConverters), MutableList removida (use ListBuffer), coleções paralelas exigem importação separada.

  • Alterações na API do Spark 4.1:

    • SQLContext removido: use o SparkSession diretamente.

    • Modo ANSI habilitado por padrão: conversões de tipo implícitas e transbordamentos se comportam de forma diferente.

    • Várias APIs obsoletas foram removidas. Consulte o Spark 4.1 Migration Guide no site do Apache Spark.

  • Validação da API CreateSession: validação adicional nos parâmetros de sessão para sessões interativas. Configurações inválidas que antes eram aceitas silenciosamente agora podem retornar erros.

  • Alteração ne comportamento de getResolvedOptions: a correspondência de prefixo de argumento é desabilitada por padrão (allow_abbrev=False). Use o nome completo do argumento ou passe allow_abbrev=True para getResolvedOptions() para restaurar o comportamento antigo.

Ações para migrar para o AWS Glue 6.0

Para trabalhos existentes, altere a Glue version da versão anterior para Glue 6.0 na configuração do trabalho.

  • No AWS Glue Studio, escolha Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3 em Glue version.

  • Na API, escolha 6.0 no parâmetro GlueVersion na operação da API UpdateJob.

Para novos trabalhos, escolha Glue 6.0 ao criar um trabalho.

  • No console, escolha Spark 4.1.1, Python 3 (Glue Version 6.0) or Spark 4.1.1, Scala 2 (Glue Version 6.0) em Glue version.

  • No AWS Glue Studio, escolha Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3 em Glue version.

  • Na API, escolha 6.0 no parâmetro GlueVersion na operação da API CreateJob.

Para ajudar a migrar os trabalhos, é possível usar as atualizações de IA generativa para Apache Spark para atualizar os trabalhos de ETL do AWS Glue de versões mais antigas do AWS Glue (2.0 e posteriores) para a versão mais recente do AWS Glue.

Solução de problemas

Você pode usar o Agente de solução de problemas do Spark para solucionar problemas nos trabalhos de ETL do AWS Glue.

Lista de verificação da migração

Revise esta lista de verificação para migração:

  • [Scala] Recompile JARs personalizados com o Scala 2.13.17. Substitua JavaConversions pelo CollectionConverters.

  • [Python] Atualize o código para compatibilidade com o Python 3.13. Remova o uso de módulos obsoletos (por exemplo, imp, cgi, cgitb).

  • [Python] Atualize as referências ao boto3 de 1.40 para 1.42.

  • [Spark SQL] Analise o impacto das consultas no modo ANSI. Adicione spark.sql.ansi.enabled=false se necessário.

  • [SDK] Substitua qualquer importação do AWS SDK v1 (com.amazonaws.*) pelo SDK v2 (software.amazon.awssdk.*).

  • [S3] Remova as configurações específicas do EMRFS. O S3A agora é o conector padrão e único do S3.

  • [Dependências] Atualize --extra-jars para versões compiladas para o Scala 2.13 e o Spark 4.1.

Migrar do AWS Glue 5.1 para o AWS Glue 6.0

Todos os parâmetros de trabalho e principais recursos existentes no AWS Glue 5.1 existirão no AWS Glue 6.0. Observe as seguintes alterações ao migrar:

  • Sistema de arquivos do S3: o EMRFS não está mais disponível. O S3A é o único conector do S3. Se você configurou anteriormente a spark.hadoop.fs.s3a.endpoint.region, continue usando-a. Se não definido, certifique-se de que o endpoint da VPC ou a configuração de rede permita que o S3A resolva a região correta.

  • Compatibilidade binária com o Scala: o AWS Glue 6.0 usa o Scala 2.13. Qualquer --extra-jars compilado com o Scala 2.12 apresenta falha com NoSuchMethodError ou ClassNotFoundException. Recompile todos os JARs Scala/Java personalizados.

  • Alterações no comportamento do Spark SQL:

    • O modo ANSI é ATIVADO por padrão. Transbordamentos de inteiros, conversões inválidas e índice de matriz fora dos limites geram exceções em vez de retornar NULL.

    • A spark.sql.legacy.timeParserPolicy padrão foi alterada. A análise de data/hora pode se comportar de modo diferente.

    • As conversões implícitas de string para numérico no SQL podem apresentar falha no modo ANSI.

  • Versão do Python: o Python 3.13 é o runtime. O atributo --additional-python-modules ainda funciona, mas está obsoleto. Considere migrar para --python-virtual-env para garantir total controle das dependências.

  • AWS SDK: apenas o SDK v2 está disponível. Se seus scripts usam o boto3 (Python), nenhuma alteração será necessária; o boto3 continua funcionando. Para trabalhos em Scala/Java usando o AWS SDK diretamente, migre para as APIs v2.

Consulte a documentação de migração do Spark:

Migrar de versões mais antigas do AWS Glue para o AWS Glue 6.0

Migração de conectores e drivers JDBC para AWS Glue 6.0

Para as versões do JDBC e dos conectores de data lake que foram atualizadas, consulte:

As alterações a seguir se aplicam às atualizações da versão OTF identificadas no Apêndice D: Atualizações do formato de tabela aberta para o AWS Glue 6.0.

Apache Iceberg

Observe as seguintes alterações:

  • O Iceberg foi atualizado para a versão 1.11.0 com total compatibilidade com as especificações do Apache Iceberg versão 3.

  • Tipo de dados VARIANT com fragmentação de variantes para consultas otimizadas de dados semiestruturados.

  • Timestamps com precisão de nanossegundos.

  • Tipos de dados geoespaciais (Geometry e Geography).

Os seguintes atributos do Iceberg já são compatíveis com ETL do AWS Glue desde o AWS Glue 5.1: vetores de exclusão (mesclagem na leitura usando Roaring Bitmaps armazenados em arquivos Puffin) e rastreamento de linhagem de linhas por meio de metadados first-row-id.

Apache Hudi

Observe as seguintes alterações:

  • Atualização do Hudi para a versão 1.1.1.

  • Compatibilidade continuada com acesso de leitura e gravação de FTA nas tabelas registradas do AWS Lake Formation.

Delta Lake

Observe as seguintes alterações:

  • O Delta Lake foi atualizado para a versão 4.2.0.

  • Compatibilidade continuada com acesso de leitura e gravação de FTA nas tabelas registradas do AWS Lake Formation.

Limitações conhecidas

As seguintes limitações se aplicam ao AWS Glue 6.0:

  • As chaves de criptografia de tabela Iceberg nativas não são compatíveis.

  • As transformações multiargumentos do Iceberg não são compatíveis.

  • Os novos tipos de dados do Iceberg v3 são compatíveis apenas com Spark DataFrames. Esses atributos não funcionarão com DynamicFrames.

  • O ETL Visual no AWS Glue Studio não é compatível com os novos tipos de dados do Iceberg v3. Se você quiser usar esses novos atributos com o ETL Visual, recomendamos migrar os trabalhos de ETL para o Estúdio Unificado Amazon SageMaker.

  • O controle de acesso refinado (FGAC) não é compatível com colunas VARIANT.

  • As tabelas Iceberg criadas com o 'format-version'='3' não podem ser lidas pelo Athena SQL (erro: Cannot read unsupported version 3). Use o Iceberg v2 para garantir compatibilidade intermecanismo com o Athena.

Apêndice A: atualizações de dependência notáveis

Veja a seguir as atualizações de dependência:

Dependência Versão no AWS Glue 6.0 Versão no AWS Glue 5.1 Versão no AWS Glue 5.0 Versão no AWS Glue 4.0
Java 17 17 17 8
Spark 4.1.1 3.5.6 3.5.4 3.3.0-amzn-1
Hadoop 3.4.2 3.4.1 3.4.1 3.3.3-amzn-0
Scala 2.13.17 2.12.18 2.12.18 2.12
Jackson 2.20.0 2.15.2 2.15.2 2.12
Hive 2.3.10-amzn-1 2.3.9-amzn-4 2.3.9-amzn-4 2,3.9-amzn-2
Arrow 18.3.0 12.0.1 12.0.1 7.0.0
AWS GlueCliente do Data Catalog 4.11.0 4.9.0 4.5.0 3.7.0
AWS SDK para Java 2.44.6 (v2 apenas) 2.35.5 2.29.52 1.12
Python 3.13 3.11 3.11 3.10
Boto3 1.42.84 1.40.61 1.34.131 1.26
Json4s 3.7.0 M11 3.7.0 M11 3.7.0 M11 3.7.0 M11
Conector EMR DynamoDB 6.1.0 5.7.0 5.6.0 4.16.0
Netty 4.2.7 N/D N/D N/D
Parquet 1.16.0 N/D N/D N/D
NumPy 2.4.4 N/D N/D N/D
Pandas 2.3.3 N/D N/D N/D

Apêndice B: upgrades do driver JDBC

A seguir estão as atualizações do driver JDBC:

Driver Versão do driver JDBC no AWS Glue 6.0 Versão do driver JDBC no AWS Glue 5.1 Versão do driver JDBC no AWS Glue 5.0
MySQL 8.0.33 8.0.33 8.0.33
Microsoft SQL Server 10.2.0 10.2.0 10.2.0
Bancos de dados da Oracle 23.4.0.24.05 23.3.0.23.09 23.3.0.23.09
PostgreSQL 42.7.3 42.7.3 42.7.3
Amazon Redshift

redshift-jdbc42-2.2.7

redshift-jdbc42-2.1.0.29

redshift-jdbc42-2.1.0.29

MariaDB 3.5.7 N/D N/D

Apêndice C: Atualizações de conectores

As atualizações do conector são as seguintes:

Conector Versão no AWS Glue 6.0 Versão no AWS Glue 5.1 Versão no AWS Glue 5.0
Spark Redshift 6.7.0 6.4.2 6.4.0
Spark SQL Kinesis 2.1.0 N/D N/D
MongoDB 11.0.1 10.3.0 10.3.0
Snowflake 3.17.0 3.1.1 3.0.0
OpenSearch 2.0.0 1.2.0 1.2.0
Conector EMR DynamoDB 6.1.0 5.7.0 5.6.0

Apêndice D: Atualizações do formato de tabela aberta

São atualizações do formato de tabela aberta:

OTF Versão no AWS Glue 6.0 Versão no AWS Glue 5.1 Versão no AWS Glue 5.0 Versão no AWS Glue 4.0
Hudi 1.1.1 1.0.2 0.15.0 0.12.1
Delta Lake 4.2.0 3.3.2 3.3.0 2.1.0
Iceberg 1.11.0 1.10.0 1.7.1 1.0.0