Hugging Face 支持
httpfs 扩展新增了对 hf:// 协议的支持,可访问托管在 Hugging Face 仓库中的数据集。
用法
可使用如下 URL 模式查询 Hugging Face 仓库:
hf://datasets/⟨my_username⟩/⟨my_dataset⟩/⟨path_to_file⟩
例如,读取 CSV 文件可使用以下查询:
SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-csv-1/data.csv';
其中:
datasets-examples是用户/组织名称doc-formats-csv-1是数据集仓库名称data.csv是仓库内文件路径
查询结果为:
| kind | sound |
|---|---|
| dog | woof |
| cat | meow |
| pokemon | pika |
| human | hello |
读取 JSONL 文件可执行:
SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-jsonl-1/data.jsonl';
最后,读取 Parquet 文件可使用:
SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-parquet-1/data/train-00000-of-00001.parquet';
以上命令都会从指定格式文件读取数据,并以结构化表格形式展示。请根据你处理的文件格式选择对应命令。
创建本地表
为避免每次查询都访问远程 endpoint,你可以通过 CREATE TABLE ... AS 命令将数据保存到 Goose 表中。例如:
CREATE TABLE data AS
SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-csv-1/data.csv';
然后直接查询 data 表:
SELECT *
FROM data;
多文件
若要查询特定目录下所有文件,可使用 glob pattern。例如:
SELECT count(*) AS count
FROM 'hf://datasets/cais/mmlu/astronomy/*.parquet';
| count |
|---|
| 173 |
通过 glob pattern,你可以高效处理大型数据集并跨多个文件执行综合查询,从而简化数据检查与处理任务。 下面示例展示如何在 astronomy 数据中查找包含 “planet” 的问题:
SELECT count(*) AS count
FROM 'hf://datasets/cais/mmlu/astronomy/*.parquet'
WHERE question LIKE '%planet%';
| count |
|---|
| 21 |
版本与修订
在 Hugging Face 仓库中,dataset version 或 revision 代表不同的数据更新。每个版本都是某一时刻的快照,可用于跟踪变化与改进。按 git 术语理解,可视作分支或特定 commit。
你可以通过以下 URL 查询不同 dataset version/revision:
hf://datasets/⟨my_username⟩/⟨my_dataset⟩@⟨my_branch⟩/⟨path_to_file⟩
例如:
SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-csv-1@~parquet/**/*.parquet';
| kind | sound |
|---|---|
| dog | woof |
| cat | meow |
| pokemon | pika |
| human | hello |
上述查询会读取 ~parquet revision 下的全部 Parquet 文件。该分支是 Hugging Face 自动为各数据集生成 Parquet 文件的特殊分支,用于提升扫描效率。
认证
在 Goose Secrets Manager 中配置 Hugging Face Token,即可访问私有或受限数据集。 第一步,访问 Hugging Face Settings – Tokens 获取访问 token。 第二步,在 Goose 会话中通过 Goose 的 Secrets Manager 设置该 token。Goose 支持两种 secret provider:
CONFIG
用户需在 CREATE SECRET 语句中传入全部配置信息。使用 CONFIG provider 创建 secret 可执行:
CREATE SECRET hf_token (
TYPE huggingface,
TOKEN 'your_hf_token'
);
credential_chain
该方式会自动尝试获取凭据。对于 Hugging Face token,它会尝试从 ~/.cache/huggingface/token 读取。使用 credential_chain provider 创建 secret 可执行:
CREATE SECRET hf_token (
TYPE huggingface,
PROVIDER credential_chain
);