Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Acessar tabelas do Amazon S3 com o Catálogo de Tabelas do Amazon S3 para Apache Iceberg

Modo de foco
Acessar tabelas do Amazon S3 com o Catálogo de Tabelas do Amazon S3 para Apache Iceberg - Amazon Simple Storage Service

É possível acessar tabelas do S3 por meio de mecanismos de consulta de código aberto, como o Apache Spark, usando o catálogo de cliente do Catálogo de Tabelas do Amazon S3 para Apache Iceberg. O Catálogo de Tabelas do Amazon S3 para Apache Iceberg é uma biblioteca de código aberto hospedada pelo AWS Labs. Ele traduz as operações do Apache Iceberg nos mecanismos de consulta (como descoberta de tabelas, atualizações de metadados e adição ou remoção de tabelas) em operações de API da funcionalidade Tabelas do S3.

O Catálogo de Tabelas do Amazon S3 para Apache Iceberg é distribuído como um Maven JAR chamado s3-tables-catalog-for-iceberg.jar. É possível criar o JAR do catálogo de cliente no Repositório do AWS Labs GitHub ou baixá-lo no Maven. Ao se conectar às tabelas, o JAR do catálogo de cliente é usado como uma dependência quando você inicializa uma sessão do Spark para o Apache Iceberg.

Usar o Catálogo de Tabelas do Amazon S3 para Apache Iceberg com o Apache Spark

É possível usar o Catálogo de Tabelas do Amazon S3 para Apache Iceberg como catálogo de cliente para se conectar a tabelas de aplicações de código aberto ao inicializar uma sessão do Spark. Na configuração da sessão, você especifica dependências em relação ao Iceberg e ao Amazon S3, e cria um catálogo personalizado que usa o bucket de tabela como warehouse de metadados.

Como inicializar uma sessão do Spark usando o Catálogo de Tabelas do Amazon S3 para Apache Iceberg
  • Inicialize o Spark usando o comando a seguir. Para usar o comando, substitua o número de versão do Catálogo de Tabelas do Amazon S3 para Apache Iceberg pela versão mais recente do Repositório do AWS Labs GitHub e o ARN do bucket de tabela pelo ARN da sua própria tabela.

    spark-shell \ --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.6.1,software.amazon.s3tables:s3-tables-catalog-for-iceberg-runtime:0.1.4 \ --conf spark.sql.catalog.s3tablesbucket=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.s3tablesbucket.catalog-impl=software.amazon.s3tables.iceberg.S3TablesCatalog \ --conf spark.sql.catalog.s3tablesbucket.warehouse=arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

Consultar tabelas do S3 com o Spark SQL

Usando o Spark, você pode executar operações DQL, DML e DDL em tabelas do S3. Ao consultar tabelas, você usa o nome da tabela totalmente qualificado, bem como o nome do catálogo da sessão, seguindo este padrão:

CatalogName.NamespaceName.TableName

Os exemplos de consultas a seguir mostram algumas maneiras de interagir com as tabelas do S3. Para usar esses exemplos de consultas no mecanismo de consulta, substitua os valores dos espaços reservados para entrada do usuário pelos seus próprios.

Como consultar tabelas com o Spark
  • Crie um namespace

    spark.sql(" CREATE NAMESPACE IF NOT EXISTS s3tablesbucket.my_namespace")
  • Criar uma tabela

    spark.sql(" CREATE TABLE IF NOT EXISTS s3tablesbucket.my_namespace.`my_table` ( id INT, name STRING, value INT ) USING iceberg ")
  • Consultar uma tabela

    spark.sql(" SELECT * FROM s3tablesbucket.my_namespace.`my_table` ").show()
  • Inserir dados em uma tabela

    spark.sql( """ INSERT INTO s3tablesbucket.my_namespace.my_table VALUES (1, 'ABC', 100), (2, 'XYZ', 200) """)
  • Carregue um arquivo de dados existente em uma tabela.

    1. Leia os dados no Spark.

      val data_file_location = "Path such as S3 URI to data file" val data_file = spark.read.parquet(data_file_location)
    2. Grave os dados em uma tabela do Iceberg.

      data_file.writeTo("s3tablesbucket.my_namespace.my_table").using("Iceberg").tableProperty ("format-version", "2").createOrReplace()
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.