Todos os produtos
Search
Central de documentação

Data Lake Formation:Acesse tabelas DLF Iceberg usando a Java API

Última atualização: Sep 18, 2026

Este tópico descreve como acessar o DLF Iceberg REST Catalog usando a Java API open-source do Apache Iceberg, Spark e Flink. Gerencie metadados de tabelas e leia e grave tabelas Iceberg pelo protocolo padrão Iceberg REST com assinatura AWS SigV4. O plano de dados usa o S3FileIO padrão da comunidade para se conectar diretamente aos endpoints compatíveis com S3 do OSS.

Pré-requisitos

  • O ambiente de runtime deve usar JDK 17 ou superior (exigido pelo Iceberg 1.11.0).

  • Adicione as seguintes dependências da comunidade Apache Iceberg (versão 1.11.0) ao seu projeto Maven. Todas as dependências estão disponíveis no Maven Central:

<dependencies>
    <dependency>
        <groupId>org.apache.iceberg</groupId>
        <artifactId>iceberg-core</artifactId>
        <version>1.11.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.iceberg</groupId>
        <artifactId>iceberg-aws</artifactId>
        <version>1.11.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.iceberg</groupId>
        <artifactId>iceberg-aws-bundle</artifactId>
        <version>1.11.0</version>
    </dependency>
</dependencies>
Nota

Para ler e gravar dados Parquet diretamente pela Java API (sem um mecanismo de computação), adicione também as dependências iceberg-data, iceberg-parquet, iceberg-orc, parquet-hadoop e hadoop-common.

Conecte-se usando a Java API

Use a classe padrão da comunidade RESTCatalog para se conectar ao DLF Iceberg REST Catalog. Passe os seguintes parâmetros de configuração durante a inicialização:

Map<String, String> props = new HashMap<>();
props.put("uri", "http://cn-hangzhou-vpc.dlf.aliyuncs.com/iceberg");
props.put("warehouse", "iceberg_table_test");
props.put("rest.auth.type", "sigv4");
props.put("rest.auth.sigv4.delegate-auth-type", "none");
props.put("rest.signing-region", "cn-hangzhou");
props.put("rest.signing-name", "DlfNext");
props.put("rest.access-key-id", "xxx");
props.put("rest.secret-access-key", "yyy");
props.put("io-impl", "org.apache.iceberg.aws.s3.S3FileIO");
RESTCatalog icebergCatalog = new RESTCatalog();
icebergCatalog.initialize(catalogName, props);

Parâmetros de configuração

Parâmetro

Descrição

Exemplo

uri

Endpoint do DLF Iceberg REST Catalog (acessível dentro da VPC). O formato é http://<region>-vpc.dlf.aliyuncs.com/iceberg. Para a lista completa de endpoints de service por região, consulte Regions and endpoints.

http://cn-hangzhou-vpc.dlf.aliyuncs.com/iceberg

warehouse

Nome do catálogo DLF.

iceberg_test

rest.auth.type

Tipo de autenticação. Defina como sigv4.

sigv4

rest.auth.sigv4.delegate-auth-type

Tipo de autenticação delegada. Defina como none.

none

rest.signing-region

ID da região da instância DLF.

cn-hangzhou

rest.signing-name

Nome do service de assinatura. Defina como DlfNext.

DlfNext

rest.access-key-id

AccessKey ID para acessar o DLF.

rest.secret-access-key

AccessKey Secret para acessar o DLF.

io-impl

Classe de implementação de IO de arquivo. Usa o S3FileIO padrão da comunidade. Defina como org.apache.iceberg.aws.s3.S3FileIO.

org.apache.iceberg.aws.s3.S3FileIO

Acesse com Apache Spark

O Apache Spark open-source lê e grava tabelas DLF Iceberg diretamente usando o runtime da comunidade Iceberg. O catálogo se comunica pelo protocolo padrão Iceberg REST com assinatura AWS SigV4, enquanto o plano de dados usa o S3FileIO da comunidade para se conectar aos endpoints compatíveis com S3 do OSS pela API compatível com S3. Todas as dependências são provenientes do Maven Central.

Inicie o Spark SQL

spark-sql \
  --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.11.0,org.apache.iceberg:iceberg-aws-bundle:1.11.0 \
  --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
  --conf spark.sql.catalog.dlf=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.dlf.type=rest \
  --conf spark.sql.catalog.dlf.uri=http://cn-hangzhou-vpc.dlf.aliyuncs.com/iceberg \
  --conf spark.sql.catalog.dlf.warehouse=iceberg_table_test \
  --conf spark.sql.catalog.dlf.rest.auth.type=sigv4 \
  --conf spark.sql.catalog.dlf.rest.auth.sigv4.delegate-auth-type=none \
  --conf spark.sql.catalog.dlf.rest.signing-region=cn-hangzhou \
  --conf spark.sql.catalog.dlf.rest.signing-name=DlfNext \
  --conf spark.sql.catalog.dlf.rest.access-key-id=xxx \
  --conf spark.sql.catalog.dlf.rest.secret-access-key=yyy \
  --conf spark.sql.catalog.dlf.io-impl=org.apache.iceberg.aws.s3.S3FileIO

Leia e grave com Spark SQL

Após configurar, use o Spark SQL padrão para ler e gravar tabelas Iceberg:

CREATE DATABASE IF NOT EXISTS dlf.demo_db;
CREATE TABLE dlf.demo_db.demo_tbl (id BIGINT, name STRING) USING iceberg;
INSERT INTO dlf.demo_db.demo_tbl VALUES (1, 'hello'), (2, 'world');
SELECT * FROM dlf.demo_db.demo_tbl;

Acesse com Apache Flink

O Apache Flink open-source usa o runtime da comunidade Iceberg para acessar tabelas DLF Iceberg. Coloque os arquivos iceberg-flink-runtime-1.20-1.11.0.jar e iceberg-aws-bundle-1.11.0.jar (ambos artefatos da comunidade disponíveis no Maven Central) no diretório lib/ da sua instalação do Flink e, em seguida, registre o catálogo no SQL Client.

Registre o catálogo

CREATE CATALOG dlf WITH (
  'type' = 'iceberg',
  'catalog-type' = 'rest',
  'uri' = 'http://cn-hangzhou-vpc.dlf.aliyuncs.com/iceberg',
  'warehouse' = 'iceberg_table_test',
  'rest.auth.type' = 'sigv4',
  'rest.auth.sigv4.delegate-auth-type' = 'none',
  'rest.signing-region' = 'cn-hangzhou',
  'rest.signing-name' = 'DlfNext',
  'rest.access-key-id' = 'xxx',
  'rest.secret-access-key' = 'yyy',
  'io-impl' = 'org.apache.iceberg.aws.s3.S3FileIO'
);

Leia e grave com Flink SQL

USE CATALOG dlf;
CREATE DATABASE IF NOT EXISTS demo_db;
CREATE TABLE demo_db.demo_tbl (id BIGINT, name STRING);
INSERT INTO demo_db.demo_tbl VALUES (1, 'hello'), (2, 'world');
SELECT * FROM demo_db.demo_tbl;