⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Hugging Face Support

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
);