open-index/hacker-news · Datasets at Hugging Face
핵심 포인트
- 1이 데이터셋은 2006년 10월부터 2026년 3월까지의 모든 Hacker News 아이템(스토리, 댓글, 설문조사 등)을 포함하며, 4,740만 개 이상의 항목으로 5분마다 실시간 업데이트됩니다.
- 2데이터는 월별 Parquet 파일로 구성되어 있으며, 당일 활동은 5분 단위의 Parquet 블록으로 저장되고 매일 자정 UTC에 월별 파일로 통합됩니다.
- 3사용자는 DuckDB, Hugging Face의 `datasets` 라이브러리, `huggingface_hub`, 또는 pandas를 통해 이 데이터에 쉽게 접근하고 분석할 수 있습니다.
이 문서는 Hugging Face에 호스팅된 "Hacker News - Complete Archive" 데이터셋에 대한 상세한 설명을 제공합니다. 이 데이터셋은 2006년 10월부터 현재(2026년 3월 25일 기준)까지 Hacker News에 제출된 모든 아이템(스토리, 댓글, Ask HN, Show HN, 구인 게시물, 설문조사 등)을 포함하며, 총 4,740만 개 이상의 아이템으로 구성된 방대한 아카이브입니다. Y Combinator가 2007년부터 운영해 온 Hacker News는 기술 커뮤니티에서 가장 오래 지속되고 영향력 있는 플랫폼 중 하나로 인정받고 있습니다.
핵심 방법론 (데이터 수집 및 파이프라인):
이 데이터셋의 가장 중요한 특징은 Hacker News 웹사이트와 실시간으로 동기화된다는 점입니다. 데이터 수집은 자동화된 라이브 파이프라인을 통해 이루어지며, 매 5분마다 Hacker News API에서 새로운 아이템을 가져와서 바로 데이터셋에 커밋합니다. 이 과정은 다음과 같은 방식으로 진행됩니다:
- 실시간 블록 커밋: 매 5분마다 새로 수집된 아이템들은 개별 Parquet 파일 블록으로
today/디렉토리(예:YYYY/MM/DD/HH/MM.parquet)에 저장됩니다. - 월별 전체 업데이트: UTC 자정(midnight UTC)이 되면, 해당 월의 전체 데이터(현재 진행 중인 월의 데이터)를 원본 소스에서 다시 한 번 완전히 가져와 하나의 권한 있는(authoritative) Parquet 파일(예:
YYYY/MM.parquet)로 저장합니다. 이 과정이 완료되면,today/디렉토리에 임시로 저장되었던 해당 월의 5분 단위 블록 파일들은 모두 삭제됩니다. - 데이터 구성: 데이터셋은
data/디렉토리 아래 연도별로 정리되며, 각 월별로 하나의 Parquet 파일이 존재합니다(예:data/2006/2006-10.parquet).today/디렉토리에는 실시간으로 업데이트되는 당일의 5분 단위 Parquet 블록 파일들이 저장됩니다. - 메타데이터 관리: 파이프라인의 진행 상황과 데이터의 완전성을 검증하기 위해
stats.csv파일은 커밋된 각 월별 데이터의 아이템 수, ID 범위, 파일 크기, 가져오기(fetch) 소요 시간, 커밋 타임스탬프 등의 메타데이터를 기록합니다.stats_today.csv는 당일 커밋된 각 5분 블록에 대한 유사한 통계를 제공합니다.
데이터 구조 및 필드:
모든 Hacker News 아이템은 Parquet 파일 형식으로 저장되며, 다음과 같은 스키마를 가집니다:
id: 아이템의 고유 식별자 (uint32)deleted: 아이템 삭제 여부 (uint8)type: 아이템 유형 (int8): 1=story, 2=comment, 3=poll, 4=pollopt, 5=jobby: 작성자 사용자 이름 (string). DuckDB에서 "by"는 예약어이므로 쿼리 시 인용 부호가 필요합니다.time: 아이템 생성 시간 (timestamp[ms, tz=UTC])text: 아이템 내용 (string)dead: 아이템 비활성화 여부 (uint8)parent: 부모 아이템의 ID (댓글 또는 투표 옵션의 경우, uint32)poll: 설문조사의 ID (설문조사 옵션의 경우, uint32)kids: 자식 아이템 ID 목록 (list)url: 연결된 URL (string)score: 아이템 점수 (int32)title: 아이템 제목 (string)parts: 설문조사 옵션의 ID 목록 (설문조사의 경우, list)descendants: 댓글 수 (스토리 또는 설문조사의 경우, int32)words:text또는title필드의 토큰화된 단어 목록 (list)
데이터 활용:
이 데이터셋은 표준 Hugging Face Parquet 레이아웃을 따르므로, 다양한 도구를 사용하여 쉽게 접근하고 분석할 수 있습니다.
- DuckDB: Hugging Face에서 Parquet 파일을 직접 읽을 수 있어 다운로드 없이 빠른 탐색이 가능합니다. DuckDB SQL 쿼리 예시:
read_parquet('hf://datasets/open-index/hacker-news/data/*/*.parquet')SELECT strftime(time, '%Y-%m') AS month, count(*) AS items FROM read_parquet('hf://datasets/open-index/hacker-news/data/2024/*.parquet') GROUP BY month ORDER BY month;
datasets라이브러리 (Python): 스트리밍 모드를 통해 전체 기록을 다운로드하지 않고 접근하거나, 특정 연도/월 데이터를 메모리에 로드할 수 있습니다.from datasets import load_dataset
huggingface_hub(Python): 특정 연도 데이터와 같이 필요한 파일만 선택적으로 다운로드할 수 있습니다.from huggingface_hub import snapshot_download
- CLI:
huggingface-cli download명령어를 사용하여 단일 월 데이터를 다운로드할 수 있습니다. - Pandas + DuckDB (Python): DuckDB와 Pandas를 연동하여 데이터 분석을 수행할 수 있습니다.
이 데이터셋은 Hacker News 데이터의 완전하고 정기적으로 업데이트되는 미러(mirror)로서, 사회과학, 자연어 처리, 커뮤니티 분석 등 다양한 연구 분야에 활용될 수 있는 귀중한 자료입니다.