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=falsepara 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-firstcom um JAR personalizado que empacote uma versão mais antiga do AWS SDK para Java 2.x, poderá haver falha no trabalho com um errojava.lang.NoSuchFieldErrorou 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-firstuse 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.EmrFileSystemnão está mais disponível. Os trabalhos que usam caminhoss3://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 ossoftware.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:
JavaConversionsremovidas (useCollectionConverters),MutableListremovida (useListBuffer), coleções paralelas exigem importação separada. -
Alterações na API do Spark 4.1:
SQLContextremovido: use oSparkSessiondiretamente.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 passeallow_abbrev=TrueparagetResolvedOptions()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 3emGlue version. -
Na API, escolha
6.0no parâmetroGlueVersionna 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)emGlue version. -
No AWS Glue Studio, escolha
Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3emGlue version. -
Na API, escolha
6.0no parâmetroGlueVersionna 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
JavaConversionspeloCollectionConverters. -
[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=falsese 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-jarspara 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-jarscompilado com o Scala 2.12 apresenta falha comNoSuchMethodErrorouClassNotFoundException. 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.timeParserPolicypadrã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-modulesainda funciona, mas está obsoleto. Considere migrar para--python-virtual-envpara 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:
-
Migration Guide: Spark Core
no site do Apache Spark -
Migration Guide: SQL, Datasets and DataFrame
no site do Apache Spark -
Migration Guide: Structured Streaming
no site do Apache Spark -
Ugrading PySpark
no site do Apache Spark
Migrar de versões mais antigas do AWS Glue para o AWS Glue 6.0
-
Para ver as etapas de migração relativas ao AWS Glue 5.0 para o AWS Glue 5.1, consulte Migrar do AWS Glue 5.0 para o AWS Glue 5.1.
-
Para ver as etapas de migração relativas ao AWS Glue 4.0 para o AWS Glue 5.0, consulte Migrar do AWS Glue 4.0 para o AWS Glue 5.0.
-
Para ver as etapas de migração relativas ao AWS Glue 3.0 para o AWS Glue 5.0, consulte Migrar do AWS Glue 3.0 para o AWS Glue 5.0.
-
Para ver as etapas de migração relativas ao AWS Glue 2.0 para o AWS Glue 5.0, consulte Migrar do AWS Glue 2.0 para o AWS Glue 5.0.
-
Depois de concluir as etapas acima, conclua a migração para o AWS Glue 6.0 seguindo Migrar do AWS Glue 5.1 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 |