httpfs
扩展引入了对 hf://
协议的支持,以访问托管在 Hugging Face 仓库中的数据集。
详情请参阅 公告博客文章。
Usage
Hugging Face 仓库可以使用以下 URL 模式进行查询:
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
是仓库中的文件路径
查询的结果是:
种类 | 声音 |
---|---|
狗 | 汪汪 |
猫 | 喵 |
宝可梦 | 皮卡 |
人类 | 你好 |
要读取一个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';
这些命令中的每一个都从指定的文件格式中读取数据,并以结构化的表格格式显示。根据您正在使用的文件格式选择适当的命令。
创建本地表
为了避免每次查询都访问远程端点,你可以通过运行CREATE TABLE ... AS
命令将数据保存在DuckDB表中。例如:
CREATE TABLE data AS
SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-csv-1/data.csv';
然后,只需如下查询data
表:
SELECT *
FROM data;
Multiple Files
要查询特定目录下的所有文件,你可以使用glob模式。例如:
SELECT count(*) AS count
FROM 'hf://datasets/cais/mmlu/astronomy/*.parquet';
计数 |
---|
173 |
通过使用glob模式,您可以高效地处理大型数据集,并在多个文件中执行全面的查询,从而简化您的数据检查和处理任务。 在这里,您可以看到如何在天文学中查找包含“planet”一词的问题:
SELECT count(*) AS count
FROM 'hf://datasets/cais/mmlu/astronomy/*.parquet'
WHERE question LIKE '%planet%';
计数 |
---|
21 |
版本控制和修订
在Hugging Face仓库中,数据集版本或修订是不同的数据集更新。每个版本都是特定时间点的快照,允许您跟踪变化和改进。在git术语中,可以将其理解为分支或特定的提交。
您可以通过以下URL查询不同的数据集版本/修订:
hf://datasets/⟨my-username⟩/⟨my-dataset⟩@⟨my_branch⟩/⟨path_to_file⟩
例如:
SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-csv-1@~parquet/**/*.parquet';
种类 | 声音 |
---|---|
狗 | 汪汪 |
猫 | 喵 |
宝可梦 | 皮卡 |
human | hello |
之前的查询将读取~parquet
修订版下的所有parquet文件。这是一个特殊的分支,Hugging Face在其中自动生成每个数据集的Parquet文件,以实现高效扫描。
Authentication
在DuckDB Secrets Manager中配置您的Hugging Face Token以访问私有或受限制的数据集。 首先,访问Hugging Face Settings – Tokens以获取您的访问令牌。 其次,使用DuckDB的Secrets Manager在您的DuckDB会话中设置它。DuckDB支持两种管理机密的提供者:
CONFIG
用户必须将所有配置信息传递到CREATE SECRET
语句中。要使用CONFIG
提供程序创建秘密,请使用以下命令:
CREATE SECRET hf_token (
TYPE HUGGINGFACE,
TOKEN 'your_hf_token'
);
CREDENTIAL_CHAIN
自动尝试获取凭据。对于Hugging Face令牌,它将尝试从~/.cache/huggingface/token
获取。要使用CREDENTIAL_CHAIN
提供程序创建密钥,请使用以下命令:
CREATE SECRET hf_token (
TYPE HUGGINGFACE,
PROVIDER CREDENTIAL_CHAIN
);