数据集查看器文档

DuckDB

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始

DuckDB

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

Python
JavaScript
import duckdb

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

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

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

Python
JavaScript
con.sql(f"SELECT horoscope, count(*), AVG(LENGTH(text)) AS avg_blog_length FROM '{url}' GROUP BY horoscope ORDER BY avg_blog_length DESC LIMIT(5)")
┌───────────┬──────────────┬────────────────────┐
│ horoscope │ count_star() │  avg_blog_length   │
│  varchar  │    int64     │       double       │
├───────────┼──────────────┼────────────────────┤
│ Aquarius  │        340621129.218836239798 │
│ Cancer    │        415091098.366812016671 │
│ Capricorn │        339611073.2002002296751 │
│ Libra     │        403021072.0718326633914 │
│ Leo       │        405871064.0536871412028 │
└───────────┴──────────────┴────────────────────┘

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

Python
JavaScript
con.sql(f"SELECT horoscope, count(*), AVG(LENGTH(text)) AS avg_blog_length FROM read_parquet({urls[:2]}) GROUP BY horoscope ORDER BY avg_blog_length DESC LIMIT(5)")
┌─────────────┬──────────────┬────────────────────┐
│  horoscope  │ count_star() │  avg_blog_length   │
│   varchar   │    int64     │       double       │
├─────────────┼──────────────┼────────────────────┤
│ Aquarius    │        495681125.8306770497095 │
│ Cancer      │        635121097.95608703867 │
│ Libra       │        603041060.6110539931017 │
│ Capricorn   │        494021059.5552609206104 │
│ Sagittarius │        504311057.4589835616982 │
└─────────────┴──────────────┴────────────────────┘

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

< > 更新 在 GitHub 上