Tous les produits
Search
Centre de documentation

Data Lake Formation:Accéder aux tables DLF Paimon via l'API Java

Dernière mise à jour :Sep 18, 2026

Découvrez comment utiliser l'API Java Paimon pour accéder à un catalogue REST DLF Paimon afin d'interroger les métadonnées et de lire les données des tables Paimon.

Prérequis

  • JDK 11 ou version ultérieure.

  • Maven 3.6 ou version ultérieure.

  • Une paire AccessKey (AccessKey ID et AccessKey Secret). Pour plus d'informations, consultez la rubrique Créer une AccessKey.

  • Un catalogue DLF et au moins une table Paimon. Pour plus d'informations, consultez les rubriques Gérer les catalogues et Tables.

  • Si vous utilisez un utilisateur RAM, configurez les stratégies RAM au niveau de l'API et les autorisations DLF au niveau des données. Pour plus d'informations, consultez la rubrique Configurer les autorisations.

  • Un accès réseau au endpoint VPC de DLF et au endpoint interne OSS où sont stockées les données de votre table.

Remarque

Remarque

Si vous pouvez lister les tables mais pas lire les données, vérifiez que le endpoint interne OSS est accessible.

Préparation : ajouter les dépendances Maven

Ajoutez le dépôt Maven jindodata ainsi que les dépendances requises à votre fichier pom.xml.

Remarque

Remplacez les numéros de version ci-dessous par les dernières versions stables :

<properties>
    <paimon.version>1.4.2</paimon.version>
    <jindo.version>6.10.6</jindo.version>
    <hadoop.version>3.3.6</hadoop.version>
</properties>

<repositories>
    <repository>
        <id>jindodata</id>
        <url>https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/mvn-repo/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.apache.paimon</groupId>
        <artifactId>paimon-core</artifactId>
        <version>${paimon.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.paimon</groupId>
        <artifactId>paimon-format</artifactId>
        <version>${paimon.version}</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun.jindodata</groupId>
        <artifactId>jindo-core</artifactId>
        <version>${jindo.version}</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun.jindodata</groupId>
        <artifactId>jindo-sdk</artifactId>
        <version>${jindo.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>${hadoop.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdfs-client</artifactId>
        <version>${hadoop.version}</version>
    </dependency>
</dependencies>

Exemple de code

L'exemple suivant crée une instance de catalogue REST Paimon et effectue des opérations courantes : liste des bases de données, liste des tables, chargement d'une table et lecture d'un échantillon de données.

Avant d'exécuter le code, configurez les variables d'environnement suivantes :

Important

Ne codez pas en dur votre AccessKey ID ou votre AccessKey Secret dans le code de production. Utilisez plutôt des variables d'environnement ou un service de gestion des secrets.

export DLF_ACCESS_KEY_ID=<your-access-key-id>
export DLF_ACCESS_KEY_SECRET=<your-access-key-secret>
export DLF_REGION=cn-hangzhou
export DLF_WAREHOUSE=<your-warehouse-name>
import org.apache.paimon.catalog.Catalog;
import org.apache.paimon.catalog.CatalogContext;
import org.apache.paimon.catalog.Identifier;
import org.apache.paimon.data.InternalRow;
import org.apache.paimon.options.Options;
import org.apache.paimon.reader.RecordReader;
import org.apache.paimon.rest.RESTCatalog;
import org.apache.paimon.table.Table;
import org.apache.paimon.table.source.ReadBuilder;
import org.apache.paimon.table.source.Split;
import org.apache.paimon.table.source.TableRead;
import org.apache.paimon.table.source.TableScan;

import java.util.List;

public class DlfPaimonRestExample {

    // Read parameters from environment variables
    private static final String ACCESS_KEY_ID = System.getenv("DLF_ACCESS_KEY_ID");
    private static final String ACCESS_KEY_SECRET = System.getenv("DLF_ACCESS_KEY_SECRET");
    private static final String REGION = System.getenv("DLF_REGION");
    private static final String WAREHOUSE = System.getenv("DLF_WAREHOUSE");
    private static final String DLF_URI =
            "http://" + REGION + "-vpc.dlf.aliyuncs.com";

    public static void main(String[] args) throws Exception {
        // Create catalog
        Catalog catalog = createCatalog();

        // List all databases
        System.out.println("=== Databases ===");
        listDatabases(catalog);

        // List tables in a database (replace with your actual database name)
        String database = "default";
        System.out.println("\n=== Tables in " + database + " ===");
        listTables(catalog, database);

        // Read sample data from a table (replace with your actual table name)
        String tableName = "example_table";
        System.out.println("\n=== Sample data from " + tableName + " ===");
        readSampleRows(catalog, database, tableName);
    }

    // Create a Paimon REST Catalog instance
    private static Catalog createCatalog() {
        Options options = new Options();
        options.set("uri", DLF_URI);
        options.set("warehouse", WAREHOUSE);
        options.set("dlf.region", REGION);
        options.set("dlf.access-key-id", ACCESS_KEY_ID);
        options.set("dlf.access-key-secret", ACCESS_KEY_SECRET);
        options.set("token.provider", "dlf");

        return new RESTCatalog(CatalogContext.create(options));
    }

    // List all databases
    private static void listDatabases(Catalog catalog) throws Exception {
        List<String> databases = catalog.listDatabases();
        for (String database : databases) {
            System.out.println(database);
        }
    }

    // List all tables in a database
    private static void listTables(Catalog catalog, String database) throws Exception {
        List<String> tables = catalog.listTables(database);
        for (String tableName : tables) {
            System.out.println(tableName);
        }
    }

    // Load a table and read sample data
    private static void readSampleRows(Catalog catalog, String database, String tableName)
            throws Exception {
        Identifier tableId = Identifier.create(database, tableName);
        Table table = catalog.getTable(tableId);

        ReadBuilder readBuilder = table.newReadBuilder();
        TableScan scan = readBuilder.newScan();
        TableRead read = readBuilder.newRead();

        List<Split> splits = scan.plan().splits();
        for (Split split : splits) {
            try (RecordReader<InternalRow> reader = read.createReader(split)) {
                RecordReader.RecordIterator<InternalRow> batch;
                while ((batch = reader.readBatch()) != null) {
                    InternalRow row;
                    while ((row = batch.next()) != null) {
                        System.out.println(row);
                    }
                    batch.releaseBatch();
                }
            }
        }
    }
}

Paramètres clés

Paramètre

Description

uri

Le endpoint REST DLF Paimon. Pour un accès via VPC, utilisez le format http://{region}-vpc.dlf.aliyuncs.com. Pour plus d'informations, consultez la rubrique Régions et endpoints.

warehouse

Le nom de votre catalogue DLF.

dlf.region

L'ID de la région, par exemple cn-hangzhou. Cette valeur doit correspondre à la région indiquée dans uri.

dlf.access-key-id

L'AccessKey ID utilisé pour l'authentification.

dlf.access-key-secret

L'AccessKey Secret utilisé pour l'authentification.

token.provider

Le fournisseur d'authentification. Définissez cette valeur sur dlf.