As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Trabalhando com o Apache Iceberg em AWS Glue
AWS Glue
AWS Glue trabalhos encapsulam scripts que definem a lógica de transformação usando um tempo de execução Apache Spark ou Python
Ao criar trabalhos do Iceberg em AWS Glue, dependendo da versão do AWS Glue, você pode usar a integração nativa do Iceberg ou uma versão personalizada do Iceberg para anexar dependências do Iceberg ao trabalho.
Usando a integração nativa do Iceberg
AWS Glue as versões 3.0, 4.0 e 5.0 oferecem suporte nativo a formatos de data lake transacionais, como Apache Iceberg, Apache Hudi e Linux Foundation Delta Lake in for Spark. AWS Glue Esse recurso de integração simplifica as etapas de configuração necessárias para começar a usar essas estruturas no. AWS Glue
Para ativar o suporte do Iceberg para seu AWS Glue trabalho, defina o trabalho: escolha a guia Detalhes do trabalho para seu AWS Glue trabalho, vá até Parâmetros do trabalho em Propriedades avançadas e defina a chave --datalake-formats
e seu valor comoiceberg
.
Se você estiver criando um trabalho usando um notebook, você pode configurar o parâmetro na primeira célula do notebook usando a %%configure
mágica da seguinte forma:
%%configure { "--conf" : <job-specific Spark configuration discussed later>, "--datalake-formats" : "iceberg" }
A iceberg
configuração para --datalake-formats
in AWS Glue
corresponde a versões específicas do Iceberg com base na sua AWS Glue versão:
AWS Glue versão | Versão padrão do Iceberg |
---|---|
5,0 |
1.7.1 |
4,0 |
1.0.0 |
3.0 |
0.13.1 |
Usando uma versão personalizada do Iceberg
Em algumas situações, talvez você queira manter o controle sobre a versão do Iceberg para o trabalho e atualizá-la no seu próprio ritmo. Por exemplo, a atualização para uma versão posterior pode desbloquear o acesso a novos recursos e aprimoramentos de desempenho. Para usar uma versão específica do Iceberg AWS Glue, você pode fornecer seus próprios arquivos JAR.
Antes de implementar uma versão personalizada do Iceberg, verifique a compatibilidade com seu AWS Glue ambiente consultando a seção de AWS Glue versões da AWS Glue documentação. Por exemplo, o AWS Glue 5.0 requer compatibilidade com o Spark 3.5.4.
Como exemplo, para executar AWS Glue trabalhos que usam a versão 1.9.1 do Iceberg, siga estas etapas:
-
Adquira e faça o upload dos arquivos JAR necessários para o Amazon S3:
-
Baixe iceberg-spark-runtime-3.5_2.12-1.9.1.jar e -1.9.1.jar
do repositório Apache Maven. iceberg-aws-bundle -
Faça o upload desses arquivos para o local designado do bucket do S3 (por exemplo,
s3://your-bucket-name/jars/
).
-
-
Configure os parâmetros do trabalho para seu AWS Glue trabalho da seguinte forma:
-
Especifique o caminho completo do S3 para os dois arquivos JAR no
--extra-jars
parâmetro, separando-os com uma vírgula (por exemplo,).s3://your-bucket-name/jars/iceberg-spark-runtime-3.5_2.12-1.9.1.jar,s3://your-bucket-name/jars/iceberg-aws-bundle-1.9.1.jar
-
Não inclua
iceberg
como um valor para o parâmetro--datalake-formats
. -
Se você usar AWS Glue 5.0, deverá definir o
--user-jars-first
parâmetro comotrue
.
-
Configurações do Spark para Iceberg em AWS Glue
Esta seção discute as configurações do Spark necessárias para criar uma tarefa de AWS Glue ETL para um conjunto de dados do Iceberg. Você pode definir essas configurações usando a chave --conf
Spark com uma lista separada por vírgulas de todas as chaves e valores de configuração do Spark. Você pode usar a %%configure
mágica em um notebook ou na seção Job parameters do AWS Glue Studio console.
%glue_version 5.0 %%configure { "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions...", "--datalake-formats" : "iceberg" }
Configure a sessão do Spark com as seguintes propriedades:
-
<catalog_name>
é o nome do seu catálogo de sessões do Iceberg Spark. Substitua-o por um nome de sua escolha e lembre-se de alterar as referências em todas as configurações associadas a esse catálogo. No seu código, você pode se referir às suas tabelas do Iceberg usando o nome da tabela totalmente qualificado, incluindo o nome do catálogo da sessão do Spark, da seguinte forma:<catalog_name>.<database_name>.<table_name>
Como alternativa, você pode alterar o catálogo padrão para o catálogo Iceberg que você definiu configurando
spark.sql.defaultCatalog
o nome do seu catálogo. Você pode usar essa segunda abordagem para se referir a tabelas sem o prefixo do catálogo, o que pode simplificar suas consultas. -
<catalog_name>.<warehouse>
aponta para o caminho do Amazon S3 onde você deseja armazenar seus dados e metadados. -
Para tornar o catálogo um AWS Glue Data Catalog,
spark.sql.catalog.<catalog_name>.type
defina comoglue
. Essa chave é necessária para apontar para uma classe de implementação para qualquer implementação de catálogo personalizado. Para catálogos compatíveis com o Iceberg, consulte a seção de melhores práticas gerais mais adiante neste guia.
Por exemplo, se você tiver um catálogo chamadoglue_iceberg
, poderá configurar seu trabalho usando várias --conf
chaves da seguinte forma:
%%configure { "--datalake-formats" : "iceberg", "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.glue_iceberg=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.glue_iceberg.warehouse=s3://<your-warehouse-dir>/ --conf spark.sql.catalog.glue_iceberg.type=glue" }
Como alternativa, você pode usar o código para adicionar as configurações acima ao seu script do Spark da seguinte forma:
spark = SparkSession.builder\ .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions")\ .config("spark.sql.catalog.glue_iceberg", "org.apache.iceberg.spark.SparkCatalog")\ .config("spark.sql.catalog.glue_iceberg.warehouse","s3://<your-warehouse-dir>/")\ .config("spark.sql.catalog.glue_iceberg.type", "glue") \ .getOrCreate()
Melhores práticas para AWS Glue empregos
Esta seção fornece diretrizes gerais para ajustar as tarefas do Spark para otimizar AWS Glue a leitura e gravação de dados nas tabelas do Iceberg. Para conhecer as melhores práticas específicas do Iceberg, consulte a seção Melhores práticas mais adiante neste guia.
-
Use a versão mais recente AWS Glue e atualize sempre que possível — novas versões AWS Glue oferecem melhorias de desempenho, tempos de inicialização reduzidos e novos recursos. Eles também oferecem suporte às versões mais recentes do Spark, que podem ser necessárias para as versões mais recentes do Iceberg. Para ver uma lista das AWS Glue versões disponíveis e das versões do Spark compatíveis com elas, consulte a AWS Glue documentação.
-
Otimize a memória do AWS Glue trabalho — siga as recomendações na postagem do AWS blog Otimize o gerenciamento de memória em AWS Glue
. -
Use o AWS Glue Auto Scaling — Quando você ativa o Auto Scaling AWS Glue , ajusta automaticamente o número de trabalhadores dinamicamente com base na sua AWS Glue carga de trabalho. Isso ajuda a reduzir o custo do seu AWS Glue trabalho durante picos de carga, porque AWS Glue reduz o número de trabalhadores quando a carga de trabalho é pequena e os trabalhadores estão ociosos. Para usar o AWS Glue Auto Scaling, você especifica um número máximo de trabalhadores para os quais seu AWS Glue trabalho pode ser escalado. Para obter mais informações, consulte Como usar o escalonamento automáticoAWS Glue na AWS Glue documentação.
-
Use a versão desejada do Iceberg — a integração AWS Glue nativa com o Iceberg é melhor para começar a usar o Iceberg. No entanto, para cargas de trabalho de produção, recomendamos que você adicione dependências de biblioteca (conforme discutido anteriormente neste guia) para ter controle total sobre a versão do Iceberg. Essa abordagem ajuda você a se beneficiar dos recursos mais recentes do Iceberg e das melhorias de desempenho em seus AWS Glue trabalhos.
-
Ative a interface do Spark para monitoramento e depuração — Você também pode usar a interface do Spark para AWS Glue inspecionar sua tarefa do Iceberg, visualizando os diferentes estágios de uma tarefa do Spark em um gráfico acíclico direcionado (DAG) e monitorando as tarefas em detalhes. A interface do usuário do Spark fornece uma maneira eficaz de solucionar problemas e otimizar as tarefas do Iceberg. Por exemplo, você pode identificar estágios de gargalo que apresentam grandes confusões ou vazamento de disco para identificar oportunidades de ajuste. Para obter mais informações, consulte Monitoramento de trabalhos usando a interface web do Apache Spark na AWS Glue documentação.