DuckDB
DuckDB
DuckDB는 인프로세스(in-process) SQL OLAP 데이터베이스 관리 시스템이에요. Hugging Face 경로(hf://)를 사용해서 Hub의 데이터에 접근할 수 있어요.
DuckDB CLI(커맨드 라인 인터페이스)는 의존성이 없는 단일 실행 파일이에요. DuckDB를 실행할 수 있는 다른 API도 있는데 Python, C++, Go, Java, Rust 등이 있어요. 자세한 내용은 클라이언트 페이지를 참고해요.
[!TIP] 설치 방법은 설치 페이지를 참고해요.
[!TIP]
hfCLI를 쓴다면hf datasets sql로 DuckDB 쿼리를 바로 실행할 수 있어요. 예:hf datasets sql "FROM 'hf://datasets/ibm/duorc/ParaphraseRC/*.parquet' LIMIT 3". 게이트·비공개 데이터셋 인증은 로그인된 토큰에서 자동으로 설정되고,--format json은 머신 판독 가능한 출력을 반환해요.
출처: 문서
본문
버전 v0.10.3부터 DuckDB CLI는 hf:// 스킴 URL을 통해 Hugging Face Hub의 데이터셋에 접근하는 기능을 기본 지원해요. 이 강력한 도구로 활용할 수 있는 기능 몇 가지를 소개할게요:
- 공개 데이터셋과 자신의 게이트·비공개 데이터셋 쿼리
- 데이터셋 분석 및 SQL 연산
- 데이터셋 결합 및 다른 형식으로 내보내기
- 임베딩 데이터셋에 대한 벡터 유사도 검색
- 데이터셋 전체 텍스트 검색
DuckDB 기능 전체 목록은 DuckDB 문서를 참고해요.
CLI를 시작하려면 설치 폴더에서 아래 명령을 실행해요:
./duckdb
Hugging Face URL 만들기
Hugging Face 데이터셋에 접근하려면 다음 URL 형식을 사용해요:
hf://datasets/{my-username}/{my-dataset}/{path_to_file}
- my-username, 데이터셋의 사용자 또는 조직, 예:
ibm - my-dataset, 데이터셋 이름, 예:
duorc - path_to_parquet_file, glob 패턴을 지원하는 parquet 파일 경로, 예: 모든 parquet 파일을 쿼리하는
**/*.parquet
[!TIP]
@~parquet브랜치(즉refs/convert/parquet리비전에 해당)를 사용해서 자동 변환된 Parquet 파일을 쿼리할 수 있어요. 자세한 내용은 https://huggingface.co/docs/datasets-server/en/parquet#conversion-to-parquet 문서를 참고해요.데이터셋의
refs/convert/parquet리비전을 참조하려면 다음 구문을 사용해요:hf://datasets/{my-username}/{my-dataset}@~parquet/{path_to_file}다음은 위 구문을 따른 URL 예시예요:
hf://datasets/ibm/duorc@~parquet/ParaphraseRC/test/0000.parquet
데이터셋의 모든 행을 쿼리하는 빠른 데모부터 시작해 볼게요:
FROM 'hf://datasets/ibm/duorc/ParaphraseRC/*.parquet' LIMIT 3;
또는 전통적인 SQL 구문으로:
SELECT * FROM 'hf://datasets/ibm/duorc/ParaphraseRC/*.parquet' LIMIT 3;
다음 섹션들에서는 Hugging Face 데이터셋에 대해 DuckDB로 수행할 수 있는 더 복잡한 연산을 다룰게요.
[!TIP] Storage Buckets 쿼리: DuckDB Python 클라이언트를 사용할 때 Hugging Face 파일시스템을 등록하면 Storage Buckets에 저장된 데이터를 쿼리할 수 있어요:
import duckdb from huggingface_hub import HfFileSystem duckdb.register_filesystem(HfFileSystem()) duckdb.sql("SELECT * FROM 'hf://buckets/username/my-bucket/data.parquet' LIMIT 10")DuckDB의 네이티브
hf://buckets/지원은 향후 릴리스에서 제공될 예정이에요.
더 알아보기 (Learn more)
hf://datasets/...경로 하나로 DuckDB에서 Hub 데이터셋을 바로 쿼리할 수 있어요.@~parquet브랜치로 자동 변환된 Parquet에 접근할 수 있어요.- DuckDB 문서에서 지원 기능 전체를 확인해 보세요.