# Patrones de acceso

Además de la [CLI y el SDK de Python](./storage-buckets#managing-files), hay varias formas de acceder a los datos del bucket desde tus herramientas y flujos de trabajo existentes.

## Elegir un método de acceso

| Método | Más adecuado para | Detalles |
|--------|----------|---------|
| **hf-mount** | Montar como sistema de archivos local: cualquier herramienta funciona | [Ver abajo](#mount-as-a-local-filesystem) |
| **Montajes de volúmenes** | HF Jobs & Spaces (misma idea, gestionado por nosotros) | [Ver abajo](#volume-mounts-in-jobs-and-spaces) |
| **DuckDB** | Consultas SQL sobre archivos de bucket, desde la CLI o cualquier cliente | [Ver abajo](#query-with-duckdb) |
| **rutas hf://** (fsspec) | Herramientas de datos de Python (pandas y otras bibliotecas compatibles con fsspec) | [Ver abajo](#python-data-tools) |
| **Sincronización de CLI** | Transferencias por lotes, copias de seguridad | [Sincronizar documentación](./storage-buckets#syncing-directories) |
| **API de S3** | Herramientas S3 existentes (AWS CLI, boto3, s5cmd) | [API compatible con S3](./storage-buckets-s3) |

Para las herramientas que usan cubos como backend (SkyPilot, Inspect, …), consulte [Integraciones](./storage-buckets-integrations). Para mantener un cliente sincronizado con un cubo sin realizar sondeos, consulte [Seguimiento de cambios](./storage-buckets#tracking-changes).

## Montar como un sistema de archivos local

[hf-mount](https://github.com/huggingface/hf-mount) permite montar cubos (y repositorios) como sistemas de archivos locales mediante NFS (recomendado) o FUSE. Los archivos se obtienen de forma perezosa: solo los bytes que tu código lee pasan por la red.

Instalar con [Homebrew](https://brew.sh/):

```bash
brew install hf-mount
```

Montar un bucket:

```bash
hf-mount start bucket username/my-bucket /mnt/data
```

Una vez montado, cualquier herramienta que lea o escriba archivos funciona con tu bucket: pandas, DuckDB, vLLM, scripts de entrenamiento, comandos de shell, etc.

> [!TIP]
> Los buckets se montan en modo lectura-escritura; los repositorios son de solo lectura. Consulte el [repositorio hf-mount](https://github.com/huggingface/hf-mount) para obtener la documentación completa, incluidas las opciones de backend, la caché y los modos de escritura.

## Montajes de volúmenes en Jobs y Spaces

Las monturas de volúmenes en [Jobs](./jobs) y [Spaces](./spaces) son la misma idea que `hf-mount`, gestionadas por la plataforma para ti, sin necesidad de configuración adicional. Los buckets se montan de forma predeterminada en modo lectura y escritura.

```bash
hf jobs run -v hf://buckets/username/my-bucket:/data python:3.12 python script.py
```

Los trabajos también pueden tomar un **directorio local** como origen del volumen (`-v ./training-data:/data`): el directorio se sincroniza con su cubo privado `jobs-artifacts` y se monta desde allí, por lo que las re-sincronizaciones incrementales y la recuperación de la salida se realizan sin coste adicional.

Para la sintaxis completa de montaje de volúmenes y la API de Python, consulte la [documentación de configuración de Jobs](./jobs-configuration#volumes) y la [guía de montaje de volúmenes de Spaces](/docs/huggingface_hub/guides/manage-spaces#mount-volumes-in-your-space).

## Consultar con DuckDB

[DuckDB](https://duckdb.org/) 2.0 y versiones posteriores usan rutas `hf://buckets/` de forma nativa a través de la extensión `httpfs` (lectura) o la extensión `hf` (lectura/escritura). Desde la CLI de DuckDB o cualquier cliente, instale y cargue `httpfs` y luego consulte un bucket:

```sql
INSTALL httpfs;
LOAD httpfs;

SELECT * FROM 'hf://buckets/username/my-bucket/data.parquet' LIMIT 10;
```

Los patrones glob funcionan de la misma manera que para los conjuntos de datos, por ejemplo, `'hf://buckets/username/my-bucket/data/**/*.parquet'`. Los buckets no tienen versiones, por lo que la sintaxis `@revision` no se aplica a las rutas de bucket. `httpfs` solo lee; para escribir los resultados de una consulta en un bucket, cargue la extensión `hf` (vea más abajo).

**Baldes privados:** cree primero un secreto de Hugging Face. Obtiene el token de `hf auth login` o de la variable de entorno `HF_TOKEN`:

```sql
CREATE SECRET hf (TYPE huggingface, PROVIDER credential_chain);
```

Escribir en Hugging Face requiere la [extensión](https://huggingface.co/duckdb-extensions) `hf`:

```sql
SET allow_extension_repositories = 'allowed';
CREATE OR REPLACE EXTENSION REPOSITORY hf_repo WITH PREFIX 'https://hf.co/buckets/duckdb-extensions/builds/resolve';
INSTALL hf FROM hf_repo;
LOAD hf FROM hf_repo;

COPY tbl TO 'hf://buckets/username/my-bucket/out.parquet';
```

> [!NOTE]
> En DuckDB 1.x, `httpfs` no reconoce las rutas `hf://buckets/`. En su lugar, registre [`HfFileSystem`](/docs/huggingface_hub/guides/hf_file_system) desde Python, o use la [API compatible con S3](./storage-buckets-s3#query-a-bucket-with-duckdb) desde la CLI y otros clientes.

## Herramientas de datos de Python

El [`HfFileSystem`](/docs/huggingface_hub/guides/hf_file_system) proporciona acceso compatible con [fsspec](https://filesystem-spec.readthedocs.io) a los buckets mediante rutas `hf://buckets/`. Cualquier biblioteca de Python que admita fsspec puede leer y escribir datos de buckets directamente.

**pandas:**

```python
import pandas as pd

df = pd.read_parquet("hf://buckets/username/my-bucket/data.parquet")
df.to_parquet("hf://buckets/username/my-bucket/output.parquet")
```

Para más información sobre las rutas `hf://` y las operaciones admitidas, consulte la [guía de `HfFileSystem`](/docs/huggingface_hub/guides/hf_file_system) y la [guía de Python de Buckets](/docs/huggingface_hub/guides/buckets).

