跳到主要内容

分析 Hugging Face 数据

Hugging Face 是一个广受欢迎的中心化平台,用户可以在上面存储、分享并协作构建机器学习模型、数据集以及其他资源。Hugging Face Dataset 根据存储库的类型,可能包含 CSV、Parquet、JSONL 等数据文件。

Doris 通过 HTTP Table Value Function 功能,可以直接使用 SQL 访问和分析 Hugging Face 数据集中的数据。

备注

该功能自 4.0.2 版本开始支持。

功能特性

特性说明
访问协议通过 HTTP 协议访问 Hugging Face Dataset
类型推断支持自动类型推断
支持的文件格式CSV、JSON、Parquet、ORC
数据操作支持 CREATE TABLE AS SELECTINSERT INTO ... SELECT

相关参数和 File Table Valued Function 相同。

URI 语法

访问 Hugging Face 数据集的 URI 格式如下:

hf://datasets/<owner>/<repo>[@<branch>]/<path>
组成部分说明是否必填
owner数据集所有者
repo数据集仓库名
branch分支名称,默认为 main
path文件路径,支持通配符

通配符说明:

通配符说明示例
*匹配单层目录中的任意字符*/*.parquet 匹配一级子目录下的所有 Parquet 文件
**递归匹配多层目录**/*.parquet 匹配所有层级的 Parquet 文件
[...]匹配字符集合中的任意一个字符test-0000[0-9].parquet 匹配 test-00000 到 test-00009

使用场景

场景一:快速查询数据

直接使用 SQL 查询 Hugging Face 上的公开数据集,无需下载文件。

示例: 查询 fka/awesome-chatgpt-prompts 仓库中的 CSV 数据:

SELECT COUNT(*) FROM
HTTP(
"uri" = "hf://datasets/fka/awesome-chatgpt-prompts/blob/main/prompts.csv",
"format" = "csv"
);

对应数据文件:https://huggingface.co/datasets/fka/awesome-chatgpt-prompts/blob/main/prompts.csv

示例: 查询 stanfordnlp/imdb 仓库中的 Parquet 文件,使用通配符匹配多个文件:

SELECT * FROM
HTTP(
"uri" = "hf://datasets/stanfordnlp/imdb@main/*/*.parquet",
"format" = "parquet"
) ORDER BY text LIMIT 1;

对应数据文件:https://huggingface.co/datasets/stanfordnlp/imdb/blob/main/plain_text/test-00000-of-00001.parquet

场景二:导入数据到本地表

将 Hugging Face 数据集导入到 Doris 表中,便于后续分析。

方式一: 使用 CREATE TABLE AS SELECT 创建新表并导入数据:

CREATE TABLE hf_table AS
SELECT * FROM
HTTP(
"uri" = "hf://datasets/stanfordnlp/imdb@script/dataset_infos.json",
"format" = "json"
);

对应数据文件:https://huggingface.co/datasets/stanfordnlp/imdb/blob/script/dataset_infos.json

方式二: 使用 INSERT INTO ... SELECT 将数据插入到已有表:

INSERT INTO hf_table
SELECT * FROM
HTTP(
"uri" = "hf://datasets/stanfordnlp/imdb@main/**/test-00000-of-0000[1].parquet",
"format" = "parquet"
) ORDER BY text LIMIT 1;

对应数据文件:https://huggingface.co/datasets/stanfordnlp/imdb/blob/main/plain_text/test-00000-of-00001.parquet

场景三:访问私有数据集

对于需要授权访问的数据集,需要在请求中添加 Token 认证。

操作步骤:

  1. 登录 Hugging Face 账号,获取 Access Token(以 hf_ 开头)。
  2. 在 SQL 中通过 http.header.Authorization 属性传递 Token。

示例:

SELECT * FROM
HTTP(
"uri" = "hf://datasets/gaia-benchmark/GAIA/blob/main/2023/validation/metadata.level1.parquet",
"format" = "parquet",
"http.header.Authorization" = "Bearer hf_MWYzOJJoZEymb..."
) LIMIT 1\G