# Daft

[Daft](https://daft.ai/) adalah mesin data berkinerja tinggi yang menyediakan pemrosesan data yang sederhana dan andal untuk setiap modalitas dan skala. Daft memiliki dukungan native untuk membaca dari dan menulis ke dataset Hugging Face.

## Memulai

Untuk memulai, instal `daft` dengan fitur `huggingface` menggunakan pip:

```bash
pip install 'daft[huggingface]'
```

## Baca

Daft dapat membaca dataset langsung dari Hugging Face Hub menggunakan fungsi [`daft.read_huggingface()`](https://docs.daft.ai/en/stable/api/io/#daft.read_huggingface) atau melalui protokol `hf://datasets/`.

### Membaca Seluruh Dataset

Dengan [`daft.read_huggingface()`](https://docs.daft.ai/en/stable/api/io/#daft.read_huggingface), Anda dapat dengan mudah memuat dataset.

```python
import daft

df = daft.read_huggingface("username/dataset_name")
```

Hal ini akan membaca seluruh dataset ke dalam DataFrame.

### Membaca File Tertentu

Anda tidak hanya dapat membaca seluruh dataset, tetapi juga dapat membaca file individual dari repositori dataset. Dengan menggunakan fungsi baca yang menerima path (seperti [`daft.read_parquet()`](https://docs.daft.ai/en/stable/api/io/#daft.read_parquet), [`daft.read_csv()`](https://docs.daft.ai/en/stable/api/io/#daft.read_csv), atau [`daft.read_json()`](https://docs.daft.ai/en/stable/api/io/#daft.read_json)), tentukan path dataset Hugging Face melalui prefiks `hf://datasets/`:

```python
import daft

# read a specific Parquet file
df = daft.read_parquet("hf://datasets/username/dataset_name/file_name.parquet")

# or a csv file
df = daft.read_csv("hf://datasets/username/dataset_name/file_name.csv")

# or a set of Parquet files using a glob pattern
df = daft.read_parquet("hf://datasets/username/dataset_name/**/*.parquet")
```

## Tulis

Daft dapat menulis file Parquet ke repositori dataset Hugging Face menggunakan [`daft.DataFrame.write_huggingface`](https://docs.daft.ai/en/stable/api/dataframe/#daft.DataFrame.write_deltalake). Daft mendukung [Content-Defined Chunking](https://huggingface.co/blog/parquet-cdc) dan [Xet](https://huggingface.co/blog/xet-on-the-hub) untuk penulisan yang lebih cepat dan terdeduplikasi.

Penggunaan dasar:

```python
import daft

df: daft.DataFrame = ...

df.write_huggingface("username/dataset_name")
```

Lihat halaman API [`DataFrame.write_huggingface`](https://docs.daft.ai/en/stable/api/dataframe/#daft.DataFrame.write_huggingface) untuk informasi lebih lanjut.

## Autentikasi

Parameter `token` di [`daft.io.HuggingFaceConfig`](https://docs.daft.ai/en/stable/api/config/#daft.io.HuggingFaceConfig) dapat digunakan untuk menentukan token akses Hugging Face untuk permintaan yang memerlukan autentikasi (misalnya, membaca repositori dataset privat atau menulis ke repositori dataset).

Contoh memuat dataset dengan token yang ditentukan:

```python
from daft.io import IOConfig, HuggingFaceConfig

io_config = IOConfig(hf=HuggingFaceConfig(token="your_token"))
df = daft.read_parquet("hf://datasets/username/dataset_name", io_config=io_config)
```

