# Spark ile kullanma

Bu belge, 🤗 Datasets'in Spark ile kullanımına hızlı bir giriş niteliğindedir ve özellikle bir Spark DataFrame'inin [Dataset](/docs/datasets/v5.2.0/tr/package_reference/main_classes#datasets.Dataset) nesnesine nasıl yüklenmesine odaklanır.

Buradan itibaren herhangi bir öğeye hızlı erişim sağlayabilir ve modelleri eğitmek için bir veri yükleyici olarak kullanabilirsiniz.

## Spark'tan yükle

Bir [Dataset](/docs/datasets/v5.2.0/tr/package_reference/main_classes#datasets.Dataset) nesnesi, bir Arrow tablosunun sarmalayıcısıdır ve veri setindeki dizilerden PyTorch, TensorFlow ve JAX tensörlerine hızlı okumalara olanak tanır. Arrow tablosu diskten bellek eşlemeli olarak yüklenir; bu sayede kullanılabilir RAM'den daha büyük veri setleri yüklenebilir.

Spark DataFrame'den `Dataset.from_spark()` kullanarak bir [Dataset](/docs/datasets/v5.2.0/tr/package_reference/main_classes#datasets.Dataset) alabilirsiniz:

```py
>>> from datasets import Dataset
>>> df = spark.createDataFrame(
...     data=[[1, "Elia"], [2, "Teo"], [3, "Fang"]],
...     columns=["id", "name"],
... )
>>> ds = Dataset.from_spark(df)
```

Spark işçileri, veri setini diskte bir önbellek dizininde Arrow dosyaları olarak yazar ve [Dataset](/docs/datasets/v5.2.0/tr/package_reference/main_classes#datasets.Dataset) oradan yüklenir.

Alternatif olarak, [IterableDataset](/docs/datasets/v5.2.0/tr/package_reference/main_classes#datasets.IterableDataset) döndüren `IterableDataset.from_spark()` kullanarak somutlaştırmayı atlayabilirsiniz:

 ```py
 >>> from datasets import IterableDataset
 >>> df = spark.createDataFrame(
 ...     data=[[1, "Elia"], [2, "Teo"], [3, "Fang"]],
 ...     columns=["id", "name"],
 ... )
 >>> ds = IterableDataset.from_spark(df)
 >>> print(next(iter(ds)))
 {"id": 1, "name": "Elia"}
 ```

### Önbelleğe Alma

`Dataset.from_spark()` kullanıldığında, sonuç olarak elde edilen [Dataset](/docs/datasets/v5.2.0/tr/package_reference/main_classes#datasets.Dataset) önbelleğe alınır; aynı DataFrame üzerinde `Dataset.from_spark()` birden fazla kez çağrılırsa, disk üzerine Arrow dosyaları olarak veri setini yazan Spark işi yeniden çalıştırılmaz.

Önbellek konumunu, `Dataset.from_spark()` fonksiyonuna `cache_dir=` parametresini geçirerek ayarlayabilirsiniz. İşçilerinizin ve mevcut makinenizin (sürücü) erişebildiği bir diski kullandığınızdan emin olun.

> [!WARNING]
> Farklı bir oturumda, bir Spark DataFrame'inin aynı [anlamsal özeti](https://spark.apache.org/docs/3.2.0/api/python/reference/api/pyspark.sql.DataFrame.semanticHash.html) olmaz ve bir Spark işi yeniden çalıştırılarak yeni bir önbelleğe kaydedilir.

### Özellik türleri

Veri setiniz görüntülerden, ses verilerinden veya N boyutlu dizilerden oluşuyorsa, `Dataset.from_spark()` (veya `IterableDataset.from_spark()`) içinde `features=` argümanını belirtebilirsiniz:

```py
>>> from datasets import Dataset, Features, Image, Value
>>> data = [(0, open("image.png", "rb").read())]
>>> df = spark.createDataFrame(data, "idx: int, image: binary")
>>> # Also works if you have arrays
>>> # data = [(0, np.zeros(shape=(32, 32, 3), dtype=np.int32).tolist())]
>>> # df = spark.createDataFrame(data, "idx: int, image: array<array<array<int>>>")
>>> features = Features({"idx": Value("int64"), "image": Image()})
>>> dataset = Dataset.from_spark(df, features=features)
>>> dataset[0]
{'idx': 0, 'image': <PIL.PngImagePlugin.PngImageFile image mode=RGB size=32x32>}
```

Mevcut tüm özellik türleri hakkında bilgi edinmek için [Features](/docs/datasets/v5.2.0/tr/package_reference/main_classes#datasets.Features) belgesini kontrol edebilirsiniz.

