数据集查看器文档

DuckDB

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

DuckDB

DuckDB 是一个数据库,支持非常快速地读取和查询 Parquet 文件。首先,创建一个到 DuckDB 的连接,然后安装并加载 httpfs 扩展以读取和写入远程文件

Python
JavaScript
import duckdb

url = "https://huggingface.co/datasets/tasksource/blog_authorship_corpus/resolve/refs%2Fconvert%2Fparquet/default/train/0000.parquet"

con = duckdb.connect()
con.execute("INSTALL httpfs;")
con.execute("LOAD httpfs;")

现在你可以编写并执行你的 SQL 查询在 Parquet 文件上

Python
JavaScript
con.sql(f"SELECT sign, count(*), AVG(LENGTH(text)) AS avg_blog_length FROM '{url}' GROUP BY sign ORDER BY avg_blog_length DESC LIMIT(5)")
┌───────────┬──────────────┬────────────────────┐
│   sign    │ count_star() │  avg_blog_length   │
│  varchar  │    int64     │       double       │
├───────────┼──────────────┼────────────────────┤
│ Cancer    │        389561206.5212034089743 │
│ Leo       │        354871180.0673767858652 │
│ Aquarius  │        327231152.1136815084192 │
│ Virgo     │        361891117.1982094006466 │
│ Capricorn │        318251102.397360565593 │
└───────────┴──────────────┴────────────────────┘

要查询多个文件 - 例如,如果数据集被分片

Python
JavaScript
urls = ["https://huggingface.co/datasets/tasksource/blog_authorship_corpus/resolve/refs%2Fconvert%2Fparquet/default/train/0000.parquet", "https://huggingface.co/datasets/tasksource/blog_authorship_corpus/resolve/refs%2Fconvert%2Fparquet/default/train/0001.parquet"]

con.sql(f"SELECT sign, count(*), AVG(LENGTH(text)) AS avg_blog_length FROM read_parquet({urls}) GROUP BY sign ORDER BY avg_blog_length DESC LIMIT(5)")
┌──────────┬──────────────┬────────────────────┐
│   sign   │ count_star() │  avg_blog_length   │
│ varchar  │    int64     │       double       │
├──────────┼──────────────┼────────────────────┤
│ Aquarius │        496871191.417211745527 │
│ Leo      │        538111183.8782219248853 │
│ Cancer   │        650481158.9691612347804 │
│ Gemini   │        519851156.0693084543618 │
│ Virgo    │        603991140.9584430205798 │
└──────────┴──────────────┴────────────────────┘

DuckDB-Wasm,一个由 WebAssembly 驱动的包,也可用于在任何浏览器中运行 DuckDB。例如,如果你想创建一个 Web 应用程序来从浏览器查询 Parquet 文件,这将非常有用!

< > Update on GitHub