資料集檢視器文件
列出 Parquet 檔案
並獲得增強的文件體驗
開始使用
列出 Parquet 檔案
資料集可以以任何格式(CSV、JSONL、影像目錄等)釋出到 Hub,並且可以使用 🤗 Datasets 庫輕鬆訪問。為了獲得更高效的體驗(尤其是在處理大型資料集時),資料集檢視器會自動將每個資料集轉換為 Parquet 格式。
什麼是 Parquet?
Parquet 是一種面向列的儲存格式,經過最佳化,可用於查詢和處理大型資料集。Parquet 是大資料處理和分析的流行選擇,廣泛用於資料處理和機器學習。
在 Parquet 中,資料被分成稱為“行組”的塊,在每個行組中,資料以列而不是行的形式儲存。每個行組列根據資料使用最佳壓縮演算法單獨壓縮,幷包含有關其所包含資料的元資料和統計資訊(最小值/最大值、NULL 值數量)。
這種結構允許高效的資料讀取和查詢
- 只從磁碟讀取必要的列(投影下推);無需讀取整個檔案。這減少了處理 Parquet 資料的記憶體需求。
- 如果行組中儲存的統計資訊與感興趣的資料不匹配,則跳過整個行組(自動過濾)
- 資料經過壓縮,減少了需要儲存和傳輸的資料量。
一個 Parquet 檔案包含一個表。如果資料集有多個表(例如,多個拆分或子集),每個表都儲存在單獨的 Parquet 檔案中。
轉換為 Parquet
Parquet 檔案釋出到 Hub 上的特定 refs/convert/parquet
分支(例如這個 fancyzhx/amazon_polarity
分支),與 main
分支並行。
為了讓資料集檢視器生成資料集的 Parquet 版本,資料集必須是公開的,或者由 PRO 使用者 或 Enterprise Hub 組織擁有。
使用資料集檢視器 API
本指南向您展示如何使用資料集檢視器的 /parquet
端點來檢索轉換為 Parquet 的資料集檔案列表。您也可以嘗試使用 Postman、RapidAPI 或 ReDoc。
/parquet
端點接受資料集名稱作為其查詢引數
import requests
headers = {"Authorization": f"Bearer {API_TOKEN}"}
API_URL = "https://datasets-server.huggingface.co/parquet?dataset=ibm/duorc"
def query():
response = requests.get(API_URL, headers=headers)
return response.json()
data = query()
端點響應是一個 JSON,其中包含以 Parquet 格式儲存的資料集檔案列表。例如,ibm/duorc
資料集有六個 Parquet 檔案,對應於其兩個子集 ParaphraseRC
和 SelfRC
的 test
、train
和 validation
拆分(有關拆分和子集的更多詳細資訊,請參閱 列出拆分和子集 指南)。
該端點還提供每個檔案的檔名和大小
{
"parquet_files":[
{
"dataset":"ibm/duorc",
"config":"ParaphraseRC",
"split":"test",
"url":"https://huggingface.co/datasets/ibm/duorc/resolve/refs%2Fconvert%2Fparquet/ParaphraseRC/test/0000.parquet",
"filename":"0000.parquet",
"size":6136591
},
{
"dataset":"ibm/duorc",
"config":"ParaphraseRC",
"split":"train",
"url":"https://huggingface.co/datasets/ibm/duorc/resolve/refs%2Fconvert%2Fparquet/ParaphraseRC/train/0000.parquet",
"filename":"0000.parquet",
"size":26005668
},
{
"dataset":"ibm/duorc",
"config":"ParaphraseRC",
"split":"validation",
"url":"https://huggingface.co/datasets/ibm/duorc/resolve/refs%2Fconvert%2Fparquet/ParaphraseRC/validation/0000.parquet",
"filename":"0000.parquet",
"size":5566868
},
{
"dataset":"ibm/duorc",
"config":"SelfRC",
"split":"test",
"url":"https://huggingface.co/datasets/ibm/duorc/resolve/refs%2Fconvert%2Fparquet/SelfRC/test/0000.parquet",
"filename":"0000.parquet",
"size":3035736
},
{
"dataset":"ibm/duorc",
"config":"SelfRC",
"split":"train",
"url":"https://huggingface.co/datasets/ibm/duorc/resolve/refs%2Fconvert%2Fparquet/SelfRC/train/0000.parquet",
"filename":"0000.parquet",
"size":14851720
},
{
"dataset":"ibm/duorc",
"config":"SelfRC",
"split":"validation",
"url":"https://huggingface.co/datasets/ibm/duorc/resolve/refs%2Fconvert%2Fparquet/SelfRC/validation/0000.parquet",
"filename":"0000.parquet",
"size":3114390
}
],
"pending":[
],
"failed":[
],
"partial":false
}
分片 Parquet 檔案
大型資料集被分成大約 500MB 的 Parquet 檔案(分片)。檔名包含資料集名稱、拆分、分片索引和分片總數(`dataset-name-train-0000-of-0004.parquet`)。對於給定的拆分,列表中的元素按其分片索引升序排序。例如,`fancyzhx/amazon_polarity` 資料集的 `train` 拆分被分成 4 個分片
{
"parquet_files":[
{
"dataset":"fancyzhx/amazon_polarity",
"config":"amazon_polarity",
"split":"test",
"url":"https://huggingface.co/datasets/fancyzhx/amazon_polarity/resolve/refs%2Fconvert%2Fparquet/amazon_polarity/test/0000.parquet",
"filename":"0000.parquet",
"size":117422360
},
{
"dataset":"fancyzhx/amazon_polarity",
"config":"amazon_polarity",
"split":"train",
"url":"https://huggingface.co/datasets/fancyzhx/amazon_polarity/resolve/refs%2Fconvert%2Fparquet/amazon_polarity/train/0000.parquet",
"filename":"0000.parquet",
"size":259761770
},
{
"dataset":"fancyzhx/amazon_polarity",
"config":"amazon_polarity",
"split":"train",
"url":"https://huggingface.co/datasets/fancyzhx/amazon_polarity/resolve/refs%2Fconvert%2Fparquet/amazon_polarity/train/0001.parquet",
"filename":"0001.parquet",
"size":258363554
},
{
"dataset":"fancyzhx/amazon_polarity",
"config":"amazon_polarity",
"split":"train",
"url":"https://huggingface.co/datasets/fancyzhx/amazon_polarity/resolve/refs%2Fconvert%2Fparquet/amazon_polarity/train/0002.parquet",
"filename":"0002.parquet",
"size":255471883
},
{
"dataset":"fancyzhx/amazon_polarity",
"config":"amazon_polarity",
"split":"train",
"url":"https://huggingface.co/datasets/fancyzhx/amazon_polarity/resolve/refs%2Fconvert%2Fparquet/amazon_polarity/train/0003.parquet",
"filename":"0003.parquet",
"size":254410930
}
],
"pending":[
],
"failed":[
],
"partial":false
}
要讀取和查詢 Parquet 檔案,請檢視 從資料集檢視器 API 查詢資料集 指南。
部分轉換的資料集
在兩種情況下,Parquet 版本可能不完整:
- 如果資料集已經是 Parquet 格式,但它包含的行組大於建議的大小(未壓縮時 100-300MB)。此大小更適合記憶體使用,因為 Parquet 在大多數資料庫中都是按行組流式傳輸的。
- 如果資料集尚未採用 Parquet 格式,或者其大小大於 5GB。
在這種情況下,Parquet 檔案將生成到 5GB,並放置在以“partial”為字首的拆分目錄中,例如“partial-train”而不是“train”。
您可以使用 Parquet 元資料側邊欄直接在 Hugging Face 上檢查行組大小,例如此處
Parquet 原生資料集
當資料集已經是 Parquet 格式時,資料不會被轉換,`refs/convert/parquet` 中的檔案是原始檔案的連結。此規則有一個例外,以確保資料集檢視器 API 保持快速:如果原始 Parquet 檔案的行組大小過大,則會生成新的 Parquet 檔案。
使用 Hugging Face Hub API
為了方便起見,您可以直接使用 Hugging Face Hub ` /api/parquet` 端點,該端點返回 Parquet URL 列表
import requests
headers = {"Authorization": f"Bearer {API_TOKEN}"}
API_URL = "https://huggingface.co/api/datasets/ibm/duorc/parquet"
def query():
response = requests.get(API_URL, headers=headers)
return response.json()
urls = query()
該端點響應是一個 JSON,其中包含每個拆分和子集的 Parquet 格式資料集檔案 URL 列表。例如,`ibm/duorc` 資料集有一個 Parquet 檔案用於“ParaphraseRC”子集的訓練拆分(有關拆分和子集的更多詳細資訊,請參閱列出拆分和子集指南)。
{
"ParaphraseRC":{
"test":[
"https://huggingface.co/api/datasets/ibm/duorc/parquet/ParaphraseRC/test/0.parquet"
],
"train":[
"https://huggingface.co/api/datasets/ibm/duorc/parquet/ParaphraseRC/train/0.parquet"
],
"validation":[
"https://huggingface.co/api/datasets/ibm/duorc/parquet/ParaphraseRC/validation/0.parquet"
]
},
"SelfRC":{
"test":[
"https://huggingface.co/api/datasets/ibm/duorc/parquet/SelfRC/test/0.parquet"
],
"train":[
"https://huggingface.co/api/datasets/ibm/duorc/parquet/SelfRC/train/0.parquet"
],
"validation":[
"https://huggingface.co/api/datasets/ibm/duorc/parquet/SelfRC/validation/0.parquet"
]
}
}
您可以選擇指定要返回的子集名稱以及拆分
import requests
headers = {"Authorization": f"Bearer {API_TOKEN}"}
API_URL = "https://huggingface.co/api/datasets/ibm/duorc/parquet/ParaphraseRC/train"
def query():
response = requests.get(API_URL, headers=headers)
return response.json()
urls = query()
[
"https://huggingface.co/api/datasets/ibm/duorc/parquet/ParaphraseRC/train/0.parquet"
]
每個 parquet 檔案也可以使用其分片索引訪問:`https://huggingface.co/api/datasets/ibm/duorc/parquet/ParaphraseRC/train/0.parquet` 會重定向到 `https://huggingface.co/datasets/ibm/duorc/resolve/refs%2Fconvert%2Fparquet/ParaphraseRC/train/0000.parquet`。
< > 在 GitHub 上更新