Tous les produits
Search
Centre de documentation

Data Lake Formation:Présentation de l'accès aux fichiers

Dernière mise à jour :Aug 24, 2026

PVFS (Paimon Virtual Storage) permet d'accéder aux tables Paimon d'un catalogue Data Lake Formation (DLF) via des chemins de fichier standard, sans démarrer de moteur de calcul tel que Flink ou Spark.

PVFS associe les métadonnées et la structure de stockage d'une table Paimon à un chemin virtuel unifié. Utilisez ce chemin pour lire directement le contenu sous-jacent de la table (snapshots, fichiers de données et métadonnées) via le SDK Java ou le SDK Python. Le format du chemin est identique pour les deux SDK et tous les frameworks de calcul pris en charge.

pvfs://<catalog_name>/<database_name>/<table_name>/...

Pour plus d'informations sur la conception de PVFS, consultez Paimon Virtual Storage.

PVFS permet aux développeurs et aux ingénieurs de données d'explorer, de tester et de gérer les tables Paimon dans des environnements locaux ou scriptés, améliorant ainsi l'efficacité du développement et des opérations sur le data lake.

Prise en charge des SDK

  • SDK Java : Implémente l'interface Hadoop Distributed File System (HDFS). S'intègre à l'écosystème Hadoop, y compris Hive, Spark et Presto.

  • SDK Python : Basé sur Filesystem Spec (fsspec). Compatible avec les outils de données Python tels que Dask, Pandas et PyArrow.

Structure du chemin

Tous les chemins PVFS suivent un namespace à trois niveaux :

pvfs://<catalog_name>/<database_name>/<table_name>/[path]

Segment

Description

catalog_name

Nom du catalogue DLF

database_name

Base de données au sein du catalogue

table_name

Table Paimon à accéder

path

Facultatif. Chemin relatif vers un fichier ou un répertoire spécifique au sein de la table

Comportement lors du listage

Lorsque vous listez le contenu d'un chemin PVFS, la réponse reflète la hiérarchie du namespace virtuel :

  • pvfs://<catalog_name>/ — renvoie toutes les bases de données du catalogue sous forme de chemins virtuels

  • pvfs://<catalog_name>/<database_name>/ — renvoie toutes les tables de la base de données sous forme de chemins virtuels

  • pvfs://<catalog_name>/<database_name>/<table_name>/ — renvoie les fichiers et répertoires réels de la table

Tous les chemins listés sont des chemins virtuels. Les opérations de lecture et d'écriture résolvent automatiquement le chemin virtuel vers l'emplacement de stockage réel de la table.

SDK Java

Le SDK Java implémente l'interface HDFS, rendant PVFS accessible depuis n'importe quel framework compatible Hadoop.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Java 8 ou version ultérieure

  • Un catalogue DLF contenant au moins une table Paimon

  • Un jeton d'accès DLF valide

Configuration à l'aide de l'API Hadoop FileSystem

Définissez les propriétés suivantes dans votre objet Configuration ou dans le fichier core-site.xml :

Propriété

Valeur

Description

fs.pvfs.impl

org.apache.paimon.vfs.hadoop.PaimonVirtualFileSystem

Classe d'implémentation du système de fichiers PVFS

fs.pvfs.uri

URL de l'endpoint DLF

Endpoint du service DLF

Exemple : lecture d'un fichier à l'aide de l'API Hadoop FileSystem

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

Configuration conf = new Configuration();
conf.set("fs.pvfs.impl", "org.apache.paimon.vfs.hadoop.PaimonVirtualFileSystem");
// Replace <dlf-endpoint> with the actual DLF service endpoint
conf.set("fs.pvfs.uri", "<dlf-endpoint>");

Path path = new Path("pvfs://<catalog_name>/<database_name>/<table_name>/");
FileSystem fs = path.getFileSystem(conf);
// List files in the table
fs.listStatus(path);

**Exemple : configuration dans core-site.xml pour un accès à l'échelle du cluster**

<configuration>
  <property>
    <name>fs.pvfs.impl</name>
    <value>org.apache.paimon.vfs.hadoop.PaimonVirtualFileSystem</value>
  </property>
  <property>
    <name>fs.pvfs.uri</name>
    <!-- Replace with the actual DLF service endpoint -->
    <value><dlf-endpoint></value>
  </property>
</configuration>

Après avoir ajouté ces propriétés, des frameworks tels que Hive, Spark et Presto peuvent accéder aux chemins PVFS sans configuration supplémentaire.

Exemple : interrogation d'une table avec Spark SQL

import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder()
  .config("spark.hadoop.fs.pvfs.impl",
          "org.apache.paimon.vfs.hadoop.PaimonVirtualFileSystem")
  // Replace <dlf-endpoint> with the actual DLF service endpoint
  .config("spark.hadoop.fs.pvfs.uri", "<dlf-endpoint>")
  .getOrCreate()

spark.sql("""
  CREATE TEMPORARY VIEW my_table
  USING parquet
  OPTIONS (path 'pvfs://<catalog_name>/<database_name>/<table_name>/')
""")
spark.sql("SELECT * FROM my_table LIMIT 10").show()

SDK Python

Le SDK Python implémente l'interface fsspec, vous permettant d'utiliser PVFS avec n'importe quelle bibliothèque Python compatible fsspec.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Python 3.7 ou version ultérieure

  • pypaimon installé

  • Un catalogue DLF contenant au moins une table Paimon

  • Un jeton d'accès DLF valide

Initialisation du système de fichiers

Transmettez les options suivantes lors de la création d'une instance PaimonVirtualFileSystem :

Paramètre

Type

Obligatoire

Description

uri

str

Oui

URL de l'endpoint du service DLF

token.provider

str

Oui

Type de fournisseur d'authentification

token

str

Oui

Jeton d'accès DLF

import pypaimon

options = {
    "uri": "<dlf-endpoint>",          # Replace with the DLF service endpoint
    "token.provider": "dlf",
    "token": "<your-dlf-token>",      # Replace with a valid DLF access token
}
fs = pypaimon.PaimonVirtualFileSystem(options)

Lister et explorer les tables

# List all tables in a database
fs.ls("pvfs://<catalog_name>/<database_name>/")

# List files in a specific table
fs.ls("pvfs://<catalog_name>/<database_name>/<table_name>/")

Lecture avec PyArrow

import pypaimon
import pyarrow.parquet as pq

fs = pypaimon.PaimonVirtualFileSystem(options)

# Read a Parquet file from a Paimon table
dataset = pq.ParquetDataset(
    "pvfs://<catalog_name>/<database_name>/<table_name>/",
    filesystem=fs
)
table = dataset.read()
df = table.to_pandas()
print(df.head())

Lecture avec Pandas

import pypaimon
import pandas as pd

fs = pypaimon.PaimonVirtualFileSystem(options)

# Read a CSV file from a Paimon table
with fs.open("pvfs://<catalog_name>/<database_name>/<table_name>/data.csv") as f:
    df = pd.read_csv(f)
print(df.head())

Contrôle d'accès

PVFS applique les politiques de contrôle d'accès unifiées de DLF. Les autorisations sont gérées au niveau de la table : les utilisateurs doivent disposer des autorisations de lecture ou d'écriture appropriées sur une table DLF pour y accéder via un chemin PVFS. Pour plus d'informations, consultez Configurer les autorisations.