Datasets documentation

Spark와 함께 사용

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.2.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Spark와 함께 사용

이 문서는 🤗 Datasets를 Spark와 함께 사용하는 방법에 대한 간단한 소개이며, 특히 Spark DataFrame을 Dataset 객체로 로드하는 방법에 중점을 둡니다.

그 후로 모든 요소에 빠르게 접근할 수 있으며, 이를 데이터 로더로 사용하여 모델을 학습할 수 있습니다.

Spark에서 로드

Dataset 객체는 Arrow 테이블의 래퍼로, 데이터셋의 배열을 PyTorch, TensorFlow, JAX 텐서로 빠르게 읽을 수 있게 합니다. Arrow 테이블은 디스크에서 메모리 매핑되므로, 사용 가능한 RAM보다 큰 데이터셋도 로드할 수 있습니다.

Dataset.from_spark()를 사용하여 Spark DataFrame에서 Dataset을 가져올 수 있습니다:

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

Spark 워커는 데이터셋을 Arrow 파일로 캐시 디렉터리에 디스크에 기록하고, Dataset은 해당 위치에서 로드됩니다.

대신 IterableDataset.from_spark()를 사용하여 materialization을 건너뛸 수 있으며, 이 메서드는 IterableDataset을 반환합니다:

>>> 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"}

캐싱

Dataset.from_spark()를 사용할 때 생성되는 Dataset은 캐시됩니다. 동일한 DataFrame에 대해 Dataset.from_spark()를 여러 번 호출하더라도 디스크에 Arrow 파일로 데이터를 기록하는 Spark 작업을 다시 실행하지 않습니다.

cache_dir=를 Dataset.from_spark()에 전달하여 캐시 위치를 설정할 수 있습니다. 워커와 현재 머신(드라이버) 모두에서 사용할 수 있는 디스크를 사용하도록 하십시오.

다른 세션에서는 Spark DataFrame의 semantic hash가 동일하지 않으므로 Spark 작업을 다시 실행하고 새로운 캐시에 저장합니다.

기능 유형

데이터셋이 이미지, 오디오 데이터 또는 N차원 배열로 구성되어 있다면 Dataset.from_spark()(또는 IterableDataset.from_spark())에서 features= 인수를 지정할 수 있습니다:

>>> 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>}

사용 가능한 모든 feature type에 대한 정보는 Features 문서를 확인하세요.

Update on GitHub