From cc9cda146a42ad35af0fab8b91149ef86d571873 Mon Sep 17 00:00:00 2001 From: aydawka Date: Wed, 18 Feb 2026 16:32:19 -0800 Subject: [PATCH 01/12] =?UTF-8?q?feat:=20=E2=9C=A8=20add=20athena=20blog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/swh-s3-athena.md | 291 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 291 insertions(+) create mode 100644 blog/swh-s3-athena.md diff --git a/blog/swh-s3-athena.md b/blog/swh-s3-athena.md new file mode 100644 index 00000000..6a7c362c --- /dev/null +++ b/blog/swh-s3-athena.md @@ -0,0 +1,291 @@ +--- +title: Retrieving Data from the Software Heritage S3 Graph Dataset Using Amazon Athena +authors: + - 'AydanGasimova' +date: '2026-02-25' +category: 'Guide' +heroImage: 'https://images.unsplash.com/photo-1743183988574-e8b4d2e5830a?q=80&w=830&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' +imageAuthor: 'Marco Palumbo' +imageAuthorLink: 'https://unsplash.com/@sapporo2025' +subtitle: 'Retrieving Data from the Software Heritage S3 Graph Dataset Using Amazon Athena.' +tags: + - FAIR data + - public data archive + - Software Heritage + - AWS + - AWS S3 bucket + - Athena api + - Parquet +--- + +In this blog, we outline a step-by-step traversal of the Software Heritage Graph Dataset using Amazon Athenaβ€”starting at the origin table and progressing through the graph to the directory content layerβ€”to produce a filtered, deduplicated set of GitHub README content hashes. We then demonstrate how to retrieve selected content locally in a controlled and reproducible manner. Working with an archive at this scale is inherently challenging, but with a well-defined traversal strategy the process becomes systematic. Finally, a brief cost breakdown for each stage of the pipeline is provided. +## Overview +For more than a decade, the Software Heritage initiative has led one of the most comprehensive efforts to archive and preserve publicly available source code worldwide. Its mission is to systematically collect, safeguard, and provide long-term access to the global software commons, ensuring that research software and open-source contributions remain discoverable, citable, and reusable over time. Today, the archive contains billions of source files spanning millions of repositories across diverse ecosystems, captured as a fully deduplicated Merkle DAG. This vast body of software history is stored in Apache Parquet format and exposed through public S3 buckets, transforming what would otherwise be an unmanageable corpus into a structured, queryable archive measured in terabytes. +## Software Heritage Structure + +What makes it powerful is not just its size, but its structure. Instead of traditional repository folders, Software Heritage models software as interconnected graph tables. Every object is hash-addressed and deduplicated. That design enables reproducibility at scale, but it also means retrieving specific data requires understanding the traversal path. The traversal process is described in the following paragraphs. + +## Prerequisites +Before we get started, you'll need to make sure you have access to the following: + - AWS account with permissions to use Amazon Athena and S3 + - Access to the public Software Heritage Graph Dataset stored in S3 + - An S3 bucket you control to store intermediate and final query outputs + +### Step 1. Accessing the Software Heritage Graph +We began by defining an external table in Amazon Athena pointing to the Software Heritage Graph snapshot dated 2025-10-08, stored as Parquet files on S3, in order to query the origin data. +```sql +CREATE EXTERNAL TABLE IF NOT EXISTS swh_graph_2025_10_08.origin ( + id STRING, + url STRING +) +STORED AS PARQUET +LOCATION 's3://softwareheritage/graph/2025-10-08/origin/'; +``` + +Once the external tables were defined in Athena, our initial objective was to retrieve the required data; however, these elements were distributed across multiple tables, and integrating them required joining six separate tables. To address this challenge, it was necessary to understand the structure of the Software Heritage (SWH) graph schema, a simplified representation of which is shown below: +```text +SOFTWARE HERITAGE GRAPH DATASET SCHEMA + +πŸ“‹ origin (origin record) + β”‚ + -β”œβ”€β”€β–Ί πŸ“‹ origin_visit (visit record) + β”‚ + β”‚ πŸ”— snapshot_id + β–Ό +πŸ“‹ origin_visit_status (visit status) + β”‚ + β”‚ πŸ”— snapshot_id + β–Ό +πŸ“‹ snapshot (repository snapshot) + β”‚ + β–Ό +πŸ“‹ snapshot_branch (branches) + β”‚ + β”œβ”€β”€β–Ί πŸ“‹ revision (commit) + β”‚ β”‚ + β”‚ β”œβ”€β”€β–Ί πŸ“‹ directory (root directory) + β”‚ β”‚ β”‚ + β”‚ β”‚ β–Ό + β”‚ β”‚ πŸ“‹ directory_entry + β”‚ β”‚ β”‚ + β”‚ β”‚ β”œβ”€β”€β–Ί πŸ“‹ content (file content) + β”‚ β”‚ β”‚ + β”‚ β”‚ └──► πŸ“‹ directory (subdirectory) + β”‚ β”‚ + β”‚ └──► πŸ“‹ revision_history (parent commits) + β”‚ + └──► πŸ“‹ release (release tag) + β”‚ + └──► πŸ“‹ revision or directory + +───────────────────────────────────────────── + +STANDALONE TABLES + + πŸ“‹ person (author/committer metadata) + πŸ“‹ skipped_content (non-archived content) + +───────────────────────────────────────────── + +πŸ“‹ Table πŸ”— Foreign Key ──► Relationship +``` + As illustrated, repository URLs, their corresponding visit dates, and SHA-1 identifiers are located in three different tables. To obtain this information, we attempted to construct a single join query, as shown below. +```sql +CREATE TABLE default.url_to_content AS +SELECT + u.url, + u.visit_date, + ovs.snapshot as snapshot_id, + sb.name as branch_name, + sb.target as revision_id, + r.directory as directory_id, + de.name as file_name, + de.target as content_sha1_git, + c.sha1 as content_sha1 +FROM default.url_and_date u +JOIN swh_graph_2025_10_08.origin_visit_status ovs + ON u.url = ovs.origin + AND u.visit_date = ovs.date +JOIN swh_graph_2025_10_08.snapshot_branch sb + ON ovs.snapshot = sb.snapshot_id +JOIN swh_graph_2025_10_08.revision r + ON sb.target = r.id +JOIN swh_graph_2025_10_08.directory_entry de + ON r.directory = de.directory_id +JOIN swh_graph_2025_10_08.content c + ON de.target = c.sha1_git +WHERE sb.target_type = 'revision' + AND de.type = 'file'; +``` +However, since each table participating in the join contains over 100 million rows and the SWH Graph dataset is not partitioned, the query placed substantial pressure on Athena’s execution limits and could not be completed successfully. More detailed information about the structure and design of the SWH dataset can be found in the corresponding Software Heritage article. + +In addition to executing the complete join query in a single run, we also attempted to download and store the relevant SWH tables locally in one step. However, this approach likewise resulted in API exhaustion errors. Consequently, in order to obtain the SHA-1 identifiers, we adopted a stepwise strategy: each table was saved locally as an intermediate table, and the joins were performed incrementally. + +### Step 2. Extracting Repository URLs and Visit Data + +We began with the origin table to retrieve all repository URLs, obtaining approximately 400 million URLs. Subsequently, from the origin_visit_status table, we extracted approximately 3 billion records corresponding to repository visits, each representing a crawl attempt and its associated snapshot. + +```sql +CREATE TABLE default.url_and_date AS +SELECT + o.url, + ovs.date AS visit_date, + ovs.snapshot_id +FROM swh_graph_2025_10_08.origin o +JOIN swh_graph_2025_10_08.origin_visit_status ovs + ON o.url = ovs.origin; +``` +Once we have dates, we retrieved the snapshot ids as a next: +```sql +CREATE TABLE default.url_date_snapshot_2a AS +SELECT + u.url, + u.visit_date, + ovs.snapshot as snapshot_id +FROM default.url_and_date u +JOIN swh_graph_2025_10_08.origin_visit_status ovs + ON u.url = ovs.origin + AND u.visit_date = ovs.date +WHERE ovs.snapshot IS NOT NULL; +``` +### Step 3. Linking Snapshots to Revisions and Directories + +After obtaining the snapshot IDs, attempting to save the snapshot_branch table locally exceeded Athena’s service limits. Therefore, we constrained the query to retrieve only the main and master branches, which in most repositories correspond to the principal development lines. This reduced the data volume while preserving the core revision history relevant to our analysis. + +```sql +CREATE TABLE default.snapshot_branch_filtered AS +SELECT + snapshot_id, + target AS revision_id +FROM swh_graph_2025_10_08.snapshot_branch +WHERE target_type = 'revision' + AND ( + name = CAST('refs/heads/main' AS VARBINARY) + OR name = CAST('refs/heads/master' AS VARBINARY) + ); +``` +Once filtering worked, we then obtained snapshot branches, and revision tables. + +```sql +CREATE TABLE default.url_date_branch_2b AS +SELECT + u.url, + u.visit_date, + sbf.revision_id +FROM default.url_and_date u +JOIN default.snapshot_branch_filtered sbf + ON u.snapshot_id = sbf.snapshot_id; + + + + +CREATE TABLE default.url_date_rev_2c AS +SELECT + b.url, + b.visit_date, + r.directory as directory_id +FROM default.url_date_branch_2b b +JOIN swh_graph_2025_10_08.revision r + ON b.revision_id = r.id; +``` + +### Step 4: Extracting README Entries +Once we obtained the necessary foreign key to proceed, we moved to one of the largest tables in the Software Heritage database. This was the most computationally intensive step, scanning approximately 24 TB of data. To avoid timeouts and resource limit errors, we restricted our query to retrieve only four specific README file typesβ€”README.md, readme.md, README, and README.txtβ€”by matching their corresponding hexadecimal filename encodings. + +```sql +CREATE TABLE default.directory_entry_readme AS +SELECT + directory_id, + target AS content_sha1_git +FROM swh_graph_2025_10_08.directory_entry +WHERE type = 'file' + AND name IN ( + X'524541444D452E6D64', + X'726561646D652E6D64', + X'524541444D45', + X'524541444D452E747874' + ); +``` + +### Step 5. Resolving Git SHA-1 to Canonical SHA-1 +Once we retrieved the directory-level sha1_git values, we attempted to perform the final join to obtain the canonical sha1 identifiers of the README files together with the associated URL and visit date information. However, joining millions of rows directly with the content table once again resulted in resource exhaustion errors. + +```sql +CREATE TABLE default.url_content_final AS +SELECT + d.url, + d.visit_date, + d.content_sha1_git, + ct.sha1, + ct.status +FROM default.url_date_directory_sha_3b d +JOIN swh_graph_2025_10_08.content ct + ON d.content_sha1_git = ct.sha1_git; +``` + +To address this issue, we decomposed the query into three incremental steps. First, we extracted the distinct content_sha1_git values from the intermediate result set. Next, we joined this reduced set against the content table to retrieve only the matching sha1_git–sha1 pairs. Finally, we performed the join between the original URL/date dataset and the filtered content results. + +By materializing intermediate tables and reducing the join cardinality at each stage, we were able to avoid exhaustion errors and complete the retrieval successfully. + + +```sql +CREATE TABLE default.filtered_directory_sha1 AS +SELECT DISTINCT content_sha1_git +FROM default.url_date_directory_sha_3b; +CREATE TABLE default.content_matched AS +SELECT c.sha1_git, c.sha1 +FROM swh_graph_2025_10_08.content c +JOIN default.filtered_directory_sha1 f + ON c.sha1_git = f.content_sha1_git; + + +CREATE TABLE default.url_content_final AS +SELECT d.url, d.visit_date, d.content_sha1_git, cm.sha1 +FROM default.url_date_directory_sha_3b d +JOIN default.content_matched cm + ON d.content_sha1_git = cm.sha1_git; + + +CREATE TABLE default.filtered_github_total_table AS +SELECT url, content_sha1_git, sha1, visit_date +FROM url_content_final +WHERE url LIKE 'https://github.com/%'; +``` +By following the steps above, we retrieved over 450 million GitHub repository records and stored their URLs, visit dates, and SHA-1 identifiers in a local table. + +### Step 6. Deduplicating Repositories + +We then filtered the URLs so that each appeared only once, retaining a single record per repository. +```sql +CREATE TABLE default.filtered_github_unique AS +SELECT + url, + MAX_BY(content_sha1_git, visit_date) AS content_sha1_git, + MAX(visit_date) AS visit_date +FROM default.filtered_github_total_table +GROUP BY url; +``` +As a result, the dataset was reduced to approximately 225 million rows. After excluding records with empty sha1_git values, the final dataset contained approximately 223 million rows. + +## Computational Cost Breakdown Across Processing Steps +Due to the large scale of the Software Heritage (SWH) dataset, processing can be costly. In this study, the approximate cost breakdown for each step is presented in the table below. +| Step | Stage Description | Data Scanned | Cost (USD) | +|------|-------------------|--------------|------------| +| 1 | Accessing SWH via Athena | Minimal | Minimal | +| 2 | Extracting URLs and Visit Data | ~210 GB | ~$2.44 | +| 3 | Linking Snapshots to Revisions | ~661 GB | ~$5.38 | +| 4 | Extracting README Entries | ~26 TB | ~$124.10 | +| 5 | Resolving Git SHA-1 to Canonical SHA-1 | ~1.4 TB | ~$13.10 | +| 6 | GitHub Filtering and Deduplication | Minimal | Minimal | + +Although working with materialized local tables improved performance, operations involving the largest SWH tables remained expensive. In particular, Step 4 was the most demanding stage, as the directory_entry table is among the largest in the dataset, making it the most computationally intensive and costly component of the workflow. + +## Results +After navigating the dataset like a fog-covered map, where each query gradually revealed the next segment of the route, we arrived at the intended result: a consolidated table containing 223 million records of unique GitHub URLs, their corresponding visit dates, the associated sha1_git revision identifiers, and the SHA-1 hashes of their README contents. Example of the result is provided below: +| URL | SHA1 README | Date | +|-----|-------------|------| +| https://github.com/nygim/pyfairdatatools | 0eca1c249f00956b9264403e9ecd8fb90ac5b428 | 2025-08-30 16:04:36 | +| https://github.com/fairdataihub/fairshare | 8964359b0597187a29028955ecc3845dfcf86173 | 2025-07-29 12:26:33 | +| https://github.com/megasanjay/fairdataihub.org | 458585c7c8b579e4547d445cb49d496b1be1ba19 | 2023-08-19 21:50:20 | +| https://github.com/fairdataihub/SODA-for-SPARC-Docs | 47acbdb4c775d1bb5bbd127fde9287211eee504c | 2025-10-06 11:55:02 | + From 5937ba733a1fbc43453af2bae743fd6a9e923417 Mon Sep 17 00:00:00 2001 From: aydawka Date: Sun, 22 Feb 2026 23:33:22 -0800 Subject: [PATCH 02/12] =?UTF-8?q?fix:=20=F0=9F=90=9B=20update=20athena=20b?= =?UTF-8?q?log=20post?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/swh-s3-athena.md | 95 +++++++++++++++++++++++++++---------------- 1 file changed, 59 insertions(+), 36 deletions(-) diff --git a/blog/swh-s3-athena.md b/blog/swh-s3-athena.md index 6a7c362c..e9579924 100644 --- a/blog/swh-s3-athena.md +++ b/blog/swh-s3-athena.md @@ -18,12 +18,13 @@ tags: - Parquet --- -In this blog, we outline a step-by-step traversal of the Software Heritage Graph Dataset using Amazon Athenaβ€”starting at the origin table and progressing through the graph to the directory content layerβ€”to produce a filtered, deduplicated set of GitHub README content hashes. We then demonstrate how to retrieve selected content locally in a controlled and reproducible manner. Working with an archive at this scale is inherently challenging, but with a well-defined traversal strategy the process becomes systematic. Finally, a brief cost breakdown for each stage of the pipeline is provided. -## Overview -For more than a decade, the Software Heritage initiative has led one of the most comprehensive efforts to archive and preserve publicly available source code worldwide. Its mission is to systematically collect, safeguard, and provide long-term access to the global software commons, ensuring that research software and open-source contributions remain discoverable, citable, and reusable over time. Today, the archive contains billions of source files spanning millions of repositories across diverse ecosystems, captured as a fully deduplicated Merkle DAG. This vast body of software history is stored in Apache Parquet format and exposed through public S3 buckets, transforming what would otherwise be an unmanageable corpus into a structured, queryable archive measured in terabytes. -## Software Heritage Structure +Software is a critical component of modern scientific and technological progress, encapsulating both practical expertise and accumulated knowledge. Preserving software is therefore essential not only to safeguard innovation but also to ensure continued access to the tools and methods that underpin research and discovery. Achieving this requires coordinated community efforts. Software Heritage is one initiative that provides common foundations for heritage preservation, science, and industry. -What makes it powerful is not just its size, but its structure. Instead of traditional repository folders, Software Heritage models software as interconnected graph tables. Every object is hash-addressed and deduplicated. That design enables reproducibility at scale, but it also means retrieving specific data requires understanding the traversal path. The traversal process is described in the following paragraphs. +In this blog, we perform a step-by-step traversal of the Software Heritage Graph Dataset using Amazon Athena to produce a filtered, deduplicated set of GitHub README content hashes. We then walk through retrieving the selected content into a local AWS S3 bucket within a controlled environment. Working with an archive at this scale is inherently challenging, but a structured traversal combined with practical query orchestration enables a systematic and reproducible workflow. Finally, a brief cost breakdown for each stage of the pipeline will be provided. + +## Mission of Software Heritage + +For more than a decade, the Software Heritage initiative has led one of the most comprehensive efforts to archive and preserve publicly available source code worldwide. Its mission is to systematically collect, safeguard, and provide long-term access to the global software commons, ensuring that research software and open-source contributions remain discoverable, citable, and reusable over time. Today, the archive contains billions of source files spanning millions of repositories across diverse ecosystems, captured as a fully deduplicated Merkle DAG and stored in Apache Parquet format through public S3 buckets, forming a structured and queryable archive measured in terabytes. Beyond its scale, the archive’s strength lies in its graph-based structure: rather than traditional repository folders, Software Heritage models software as interconnected tables where every object is hash-addressed and deduplicated. While this architecture enables reproducibility at scale, retrieving specific data requires understanding the graph traversal path, as described in the following paragraphs. ## Prerequisites Before we get started, you'll need to make sure you have access to the following: @@ -31,6 +32,21 @@ Before we get started, you'll need to make sure you have access to the following - Access to the public Software Heritage Graph Dataset stored in S3 - An S3 bucket you control to store intermediate and final query outputs +### To Setup AWS S3 bucket + +1. Create (or confirm) an S3 bucket for Athena outputs + + ```bash + aws s3 mb s3:// --region us-east-1 + ``` +2. Verify that your IAM role or user has the required S3 permissions for Athena result storage: + +```bash +s3:PutObject +s3:GetObject +s3:ListBucket +``` + ### Step 1. Accessing the Software Heritage Graph We began by defining an external table in Amazon Athena pointing to the Software Heritage Graph snapshot dated 2025-10-08, stored as Parquet files on S3, in order to query the origin data. ```sql @@ -42,17 +58,21 @@ STORED AS PARQUET LOCATION 's3://softwareheritage/graph/2025-10-08/origin/'; ``` -Once the external tables were defined in Athena, our initial objective was to retrieve the required data; however, these elements were distributed across multiple tables, and integrating them required joining six separate tables. To address this challenge, it was necessary to understand the structure of the Software Heritage (SWH) graph schema, a simplified representation of which is shown below: +Once the external tables were defined in Athena, our initial objective was to retrieve repository URLs, visit dates, and SHA-1 identifiers. To achieve this, it was necessary to understand the structure of the Software Heritage (SWH) graph schema, a simplified representation of which is shown below: ```text SOFTWARE HERITAGE GRAPH DATASET SCHEMA πŸ“‹ origin (origin record) β”‚ - -β”œβ”€β”€β–Ί πŸ“‹ origin_visit (visit record) + β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β–ΊπŸ§©URL + β”‚ + β”œβ”€β”€β–Ί πŸ“‹ origin_visit β”‚ β”‚ πŸ”— snapshot_id β–Ό πŸ“‹ origin_visit_status (visit status) + β”‚ + β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β–ΊπŸ§©visit_date β”‚ β”‚ πŸ”— snapshot_id β–Ό @@ -70,6 +90,8 @@ SOFTWARE HERITAGE GRAPH DATASET SCHEMA β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€β–Ί πŸ“‹ content (file content) β”‚ β”‚ β”‚ + β”‚ β”‚ β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β–ΊπŸ§©SHA1 + β”‚ β”‚ β”‚ β”‚ β”‚ └──► πŸ“‹ directory (subdirectory) β”‚ β”‚ β”‚ └──► πŸ“‹ revision_history (parent commits) @@ -87,25 +109,26 @@ STANDALONE TABLES ───────────────────────────────────────────── -πŸ“‹ Table πŸ”— Foreign Key ──► Relationship +πŸ“‹ Table πŸ”— Foreign key ──► Relationship 🧩 Selected attributes from tables ``` - As illustrated, repository URLs, their corresponding visit dates, and SHA-1 identifiers are located in three different tables. To obtain this information, we attempted to construct a single join query, as shown below. + +As illustrated, these elements reside in separate tables. We therefore attempted to construct a single join query to retrieve them; however, the enormous size of the underlying tables, combined with the unpartitioned nature of the SWH Graph dataset, caused this unified query to exceed Athena’s execution limits. + ```sql CREATE TABLE default.url_to_content AS SELECT - u.url, - u.visit_date, - ovs.snapshot as snapshot_id, - sb.name as branch_name, - sb.target as revision_id, - r.directory as directory_id, - de.name as file_name, - de.target as content_sha1_git, - c.sha1 as content_sha1 -FROM default.url_and_date u + o.url, + ovs.date AS visit_date, + ovs.snapshot AS snapshot_id, + sb.name AS branch_name, + sb.target AS revision_id, + r.directory AS directory_id, + de.name AS file_name, + de.target AS content_sha1_git, + c.sha1 AS content_sha1 +FROM swh_graph_2025_10_08.origin o JOIN swh_graph_2025_10_08.origin_visit_status ovs - ON u.url = ovs.origin - AND u.visit_date = ovs.date + ON o.url = ovs.origin JOIN swh_graph_2025_10_08.snapshot_branch sb ON ovs.snapshot = sb.snapshot_id JOIN swh_graph_2025_10_08.revision r @@ -117,25 +140,25 @@ JOIN swh_graph_2025_10_08.content c WHERE sb.target_type = 'revision' AND de.type = 'file'; ``` -However, since each table participating in the join contains over 100 million rows and the SWH Graph dataset is not partitioned, the query placed substantial pressure on Athena’s execution limits and could not be completed successfully. More detailed information about the structure and design of the SWH dataset can be found in the corresponding Software Heritage article. +In addition to executing the complete join query in a single run, we also attempted to download and store the relevant SWH tables locally in one step. However, this approach likewise resulted in API exhaustion errors. On Athena, joining multiple large unpartitioned tables greatly increases scan and shuffle costs, making a single full join impractical. More detailed information about the structure and design of the SWH dataset can be found in the corresponding Software Heritage article. + +Consequently, in order to obtain the SHA-1 identifiers, we adopted a stepwise strategy: each table was saved locally as an intermediate table, and the joins were performed incrementally. -In addition to executing the complete join query in a single run, we also attempted to download and store the relevant SWH tables locally in one step. However, this approach likewise resulted in API exhaustion errors. Consequently, in order to obtain the SHA-1 identifiers, we adopted a stepwise strategy: each table was saved locally as an intermediate table, and the joins were performed incrementally. ### Step 2. Extracting Repository URLs and Visit Data -We began with the origin table to retrieve all repository URLs, obtaining approximately 400 million URLs. Subsequently, from the origin_visit_status table, we extracted approximately 3 billion records corresponding to repository visits, each representing a crawl attempt and its associated snapshot. +We began with the origin table to retrieve all repository URLs, obtaining approximately 400 million URLs. We therefore staged intermediate results to progressively narrow the working set. Subsequently, from the origin_visit_status table, we extracted approximately 3 billion records corresponding to repository visits, each representing a crawl attempt and its associated snapshot. ```sql CREATE TABLE default.url_and_date AS SELECT o.url, - ovs.date AS visit_date, - ovs.snapshot_id + ovs.date AS visit_date FROM swh_graph_2025_10_08.origin o JOIN swh_graph_2025_10_08.origin_visit_status ovs ON o.url = ovs.origin; ``` -Once we have dates, we retrieved the snapshot ids as a next: +Using these dates, we then retrieved the snapshot identifiers: ```sql CREATE TABLE default.url_date_snapshot_2a AS SELECT @@ -148,9 +171,10 @@ JOIN swh_graph_2025_10_08.origin_visit_status ovs AND u.visit_date = ovs.date WHERE ovs.snapshot IS NOT NULL; ``` + ### Step 3. Linking Snapshots to Revisions and Directories -After obtaining the snapshot IDs, attempting to save the snapshot_branch table locally exceeded Athena’s service limits. Therefore, we constrained the query to retrieve only the main and master branches, which in most repositories correspond to the principal development lines. This reduced the data volume while preserving the core revision history relevant to our analysis. +After obtaining the snapshot IDs, attempting to save the snapshot_branch table locally exceeded Athena’s service limits. Therefore, we constrained the query to retrieve only the main and master branches, which in most repositories correspond to the principal development lines. This reduced the data volume while preserving the core revision history relevant to our analysis, although repositories whose primary development branch uses a different name may be under-represented. ```sql CREATE TABLE default.snapshot_branch_filtered AS @@ -164,7 +188,7 @@ WHERE target_type = 'revision' OR name = CAST('refs/heads/master' AS VARBINARY) ); ``` -Once filtering worked, we then obtained snapshot branches, and revision tables. +After filtering, we then obtained snapshot branches, and revision tables. ```sql CREATE TABLE default.url_date_branch_2b AS @@ -172,13 +196,11 @@ SELECT u.url, u.visit_date, sbf.revision_id -FROM default.url_and_date u +FROM default.url_date_snapshot_2a u JOIN default.snapshot_branch_filtered sbf ON u.snapshot_id = sbf.snapshot_id; - - CREATE TABLE default.url_date_rev_2c AS SELECT b.url, @@ -211,7 +233,7 @@ WHERE type = 'file' Once we retrieved the directory-level sha1_git values, we attempted to perform the final join to obtain the canonical sha1 identifiers of the README files together with the associated URL and visit date information. However, joining millions of rows directly with the content table once again resulted in resource exhaustion errors. ```sql -CREATE TABLE default.url_content_final AS +CREATE TABLE default.url_content_attempt AS SELECT d.url, d.visit_date, @@ -255,7 +277,7 @@ By following the steps above, we retrieved over 450 million GitHub repository re ### Step 6. Deduplicating Repositories -We then filtered the URLs so that each appeared only once, retaining a single record per repository. +We then filtered the URLs so that each appeared only once, retaining a single record per repository. The most recent visit date was selected for each URL, with MAX_BY ensuring the associated content hash corresponded to that latest snapshot. ```sql CREATE TABLE default.filtered_github_unique AS SELECT @@ -281,8 +303,9 @@ Due to the large scale of the Software Heritage (SWH) dataset, processing can be Although working with materialized local tables improved performance, operations involving the largest SWH tables remained expensive. In particular, Step 4 was the most demanding stage, as the directory_entry table is among the largest in the dataset, making it the most computationally intensive and costly component of the workflow. ## Results -After navigating the dataset like a fog-covered map, where each query gradually revealed the next segment of the route, we arrived at the intended result: a consolidated table containing 223 million records of unique GitHub URLs, their corresponding visit dates, the associated sha1_git revision identifiers, and the SHA-1 hashes of their README contents. Example of the result is provided below: -| URL | SHA1 README | Date | +After navigating the dataset through a sequence of queries, where each query gradually revealed the next segment of the route, we arrived at the intended result: a consolidated table containing 223 million records of unique GitHub URLs, their corresponding visit dates, the associated sha1_git revision identifiers, and the SHA-1 hashes of their README contents. An example of the result is shown below: + +| URL | SHA1 codes of README files | Date | |-----|-------------|------| | https://github.com/nygim/pyfairdatatools | 0eca1c249f00956b9264403e9ecd8fb90ac5b428 | 2025-08-30 16:04:36 | | https://github.com/fairdataihub/fairshare | 8964359b0597187a29028955ecc3845dfcf86173 | 2025-07-29 12:26:33 | From fc03dc70e9e235b625eeec927581379e927625f0 Mon Sep 17 00:00:00 2001 From: aydawka Date: Mon, 23 Feb 2026 00:01:25 -0800 Subject: [PATCH 03/12] =?UTF-8?q?fix:=20=F0=9F=90=9B=20cost?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/swh-s3-athena.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/blog/swh-s3-athena.md b/blog/swh-s3-athena.md index e9579924..d82ba172 100644 --- a/blog/swh-s3-athena.md +++ b/blog/swh-s3-athena.md @@ -290,14 +290,14 @@ GROUP BY url; As a result, the dataset was reduced to approximately 225 million rows. After excluding records with empty sha1_git values, the final dataset contained approximately 223 million rows. ## Computational Cost Breakdown Across Processing Steps -Due to the large scale of the Software Heritage (SWH) dataset, processing can be costly. In this study, the approximate cost breakdown for each step is presented in the table below. +Due to the large scale of the Software Heritage (SWH) dataset, processing can be costly. In this work, the approximate cost breakdown for each step is presented in the table below. | Step | Stage Description | Data Scanned | Cost (USD) | |------|-------------------|--------------|------------| | 1 | Accessing SWH via Athena | Minimal | Minimal | -| 2 | Extracting URLs and Visit Data | ~210 GB | ~$2.44 | -| 3 | Linking Snapshots to Revisions | ~661 GB | ~$5.38 | -| 4 | Extracting README Entries | ~26 TB | ~$124.10 | -| 5 | Resolving Git SHA-1 to Canonical SHA-1 | ~1.4 TB | ~$13.10 | +| 2 | Extracting URLs and Visit Data | ~660 GB | ~$3.3| +| 3 | Linking Snapshots to Revisions | ~1.84 TB | ~$9.2 | +| 4 | Extracting README Entries | ~26 TB | ~$130 | +| 5 | Resolving Git SHA-1 to Canonical SHA-1 | ~1.4 TB | ~$7 | | 6 | GitHub Filtering and Deduplication | Minimal | Minimal | Although working with materialized local tables improved performance, operations involving the largest SWH tables remained expensive. In particular, Step 4 was the most demanding stage, as the directory_entry table is among the largest in the dataset, making it the most computationally intensive and costly component of the workflow. From db31cfd7030aaaf7dcdbd3f9099d320604e53dcd Mon Sep 17 00:00:00 2001 From: aydawka Date: Tue, 24 Feb 2026 22:15:48 -0800 Subject: [PATCH 04/12] =?UTF-8?q?fix:=20=F0=9F=90=9B=20update=20flow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/swh-s3-athena.md | 90 +++++++++++++++---------------------------- 1 file changed, 32 insertions(+), 58 deletions(-) diff --git a/blog/swh-s3-athena.md b/blog/swh-s3-athena.md index d82ba172..c5ff3f18 100644 --- a/blog/swh-s3-athena.md +++ b/blog/swh-s3-athena.md @@ -68,7 +68,7 @@ SOFTWARE HERITAGE GRAPH DATASET SCHEMA β”‚ β”œβ”€β”€β–Ί πŸ“‹ origin_visit β”‚ - β”‚ πŸ”— snapshot_id + β”‚ πŸ”— origin_id β–Ό πŸ“‹ origin_visit_status (visit status) β”‚ @@ -100,47 +100,22 @@ SOFTWARE HERITAGE GRAPH DATASET SCHEMA β”‚ └──► πŸ“‹ revision or directory -───────────────────────────────────────────── - -STANDALONE TABLES - - πŸ“‹ person (author/committer metadata) - πŸ“‹ skipped_content (non-archived content) - -───────────────────────────────────────────── - πŸ“‹ Table πŸ”— Foreign key ──► Relationship 🧩 Selected attributes from tables ``` -As illustrated, these elements reside in separate tables. We therefore attempted to construct a single join query to retrieve them; however, the enormous size of the underlying tables, combined with the unpartitioned nature of the SWH Graph dataset, caused this unified query to exceed Athena’s execution limits. - +As illustrated, these elements reside in separate tables. We initially attempted to construct a single join query spanning all six tables: ```sql -CREATE TABLE default.url_to_content AS -SELECT - o.url, - ovs.date AS visit_date, - ovs.snapshot AS snapshot_id, - sb.name AS branch_name, - sb.target AS revision_id, - r.directory AS directory_id, - de.name AS file_name, - de.target AS content_sha1_git, - c.sha1 AS content_sha1 +-- Initial attempt: single-pass join (exceeded resource limits) +SELECT o.url, ovs.date AS visit_date, c.sha1 AS content_sha1 FROM swh_graph_2025_10_08.origin o -JOIN swh_graph_2025_10_08.origin_visit_status ovs - ON o.url = ovs.origin -JOIN swh_graph_2025_10_08.snapshot_branch sb - ON ovs.snapshot = sb.snapshot_id -JOIN swh_graph_2025_10_08.revision r - ON sb.target = r.id -JOIN swh_graph_2025_10_08.directory_entry de - ON r.directory = de.directory_id -JOIN swh_graph_2025_10_08.content c - ON de.target = c.sha1_git -WHERE sb.target_type = 'revision' - AND de.type = 'file'; +JOIN swh_graph_2025_10_08.origin_visit_status ovs ON o.url = ovs.origin +JOIN swh_graph_2025_10_08.snapshot_branch sb ON ovs.snapshot = sb.snapshot_id +JOIN swh_graph_2025_10_08.revision r ON sb.target = r.id +JOIN swh_graph_2025_10_08.directory_entry de ON r.directory = de.directory_id +JOIN swh_graph_2025_10_08.content c ON de.target = c.sha1_git +WHERE sb.target_type = 'revision' AND de.type = 'file'; ``` -In addition to executing the complete join query in a single run, we also attempted to download and store the relevant SWH tables locally in one step. However, this approach likewise resulted in API exhaustion errors. On Athena, joining multiple large unpartitioned tables greatly increases scan and shuffle costs, making a single full join impractical. More detailed information about the structure and design of the SWH dataset can be found in the corresponding Software Heritage article. +This query exceeded Athena's execution limits due to the enormous size of the underlying tables and the unpartitioned nature of the SWH Graph dataset. On Athena, joining multiple large unpartitioned tables greatly increases scan and shuffle costs, making a single full join impractical. More detailed information about the structure and design of the SWH dataset can be found in the corresponding Software Heritage article. Consequently, in order to obtain the SHA-1 identifiers, we adopted a stepwise strategy: each table was saved locally as an intermediate table, and the joins were performed incrementally. @@ -230,27 +205,22 @@ WHERE type = 'file' ``` ### Step 5. Resolving Git SHA-1 to Canonical SHA-1 -Once we retrieved the directory-level sha1_git values, we attempted to perform the final join to obtain the canonical sha1 identifiers of the README files together with the associated URL and visit date information. However, joining millions of rows directly with the content table once again resulted in resource exhaustion errors. - -```sql -CREATE TABLE default.url_content_attempt AS -SELECT - d.url, - d.visit_date, - d.content_sha1_git, - ct.sha1, - ct.status -FROM default.url_date_directory_sha_3b d -JOIN swh_graph_2025_10_08.content ct - ON d.content_sha1_git = ct.sha1_git; -``` -To address this issue, we decomposed the query into three incremental steps. First, we extracted the distinct content_sha1_git values from the intermediate result set. Next, we joined this reduced set against the content table to retrieve only the matching sha1_git–sha1 pairs. Finally, we performed the join between the original URL/date dataset and the filtered content results. +Once we retrieved the directory-level sha1_git values, we decomposed the query into three incremental steps. First, we extracted the distinct content_sha1_git values from the intermediate result set. Next, we joined this reduced set against the content table to retrieve only the matching sha1_git–sha1 pairs. Finally, we performed the join between the original URL/date dataset and the filtered content results. By materializing intermediate tables and reducing the join cardinality at each stage, we were able to avoid exhaustion errors and complete the retrieval successfully. - ```sql +CREATE TABLE default.url_date_directory_sha_3b AS +SELECT + u.url, + u.visit_date, + d.content_sha1_git +FROM default.url_date_rev_2c u +JOIN default.directory_entry_readme d + ON u.directory_id = d.directory_id; + + CREATE TABLE default.filtered_directory_sha1 AS SELECT DISTINCT content_sha1_git FROM default.url_date_directory_sha_3b; @@ -268,10 +238,6 @@ JOIN default.content_matched cm ON d.content_sha1_git = cm.sha1_git; -CREATE TABLE default.filtered_github_total_table AS -SELECT url, content_sha1_git, sha1, visit_date -FROM url_content_final -WHERE url LIKE 'https://github.com/%'; ``` By following the steps above, we retrieved over 450 million GitHub repository records and stored their URLs, visit dates, and SHA-1 identifiers in a local table. @@ -279,6 +245,11 @@ By following the steps above, we retrieved over 450 million GitHub repository re We then filtered the URLs so that each appeared only once, retaining a single record per repository. The most recent visit date was selected for each URL, with MAX_BY ensuring the associated content hash corresponded to that latest snapshot. ```sql +CREATE TABLE default.filtered_github_total_table AS +SELECT url, content_sha1_git, sha1, visit_date +FROM url_content_final +WHERE url LIKE 'https://github.com/%'; + CREATE TABLE default.filtered_github_unique AS SELECT url, @@ -296,8 +267,8 @@ Due to the large scale of the Software Heritage (SWH) dataset, processing can be | 1 | Accessing SWH via Athena | Minimal | Minimal | | 2 | Extracting URLs and Visit Data | ~660 GB | ~$3.3| | 3 | Linking Snapshots to Revisions | ~1.84 TB | ~$9.2 | -| 4 | Extracting README Entries | ~26 TB | ~$130 | -| 5 | Resolving Git SHA-1 to Canonical SHA-1 | ~1.4 TB | ~$7 | +| 4 | Extracting README Entries | ~26 TB | ~$130.0 | +| 5 | Resolving Git SHA-1 to Canonical SHA-1 | ~1.4 TB | ~$7.0 | | 6 | GitHub Filtering and Deduplication | Minimal | Minimal | Although working with materialized local tables improved performance, operations involving the largest SWH tables remained expensive. In particular, Step 4 was the most demanding stage, as the directory_entry table is among the largest in the dataset, making it the most computationally intensive and costly component of the workflow. @@ -312,3 +283,6 @@ After navigating the dataset through a sequence of queries, where each query gra | https://github.com/megasanjay/fairdataihub.org | 458585c7c8b579e4547d445cb49d496b1be1ba19 | 2023-08-19 21:50:20 | | https://github.com/fairdataihub/SODA-for-SPARC-Docs | 47acbdb4c775d1bb5bbd127fde9287211eee504c | 2025-10-06 11:55:02 | +## Conclusion + +This guide demonstrated a practical workflow for extracting README content hashes from the Software Heritage Graph Dataset using Amazon Athena. By materializing intermediate tables and breaking large joins into manageable steps, we were able to navigate scale constraints and build a focused dataset. The resulting collection of GitHub URLs and SHA-1 hashes supports downstream tasks such as DOI mining and software citation analysis, illustrating how structured traversal enables effective exploration of large archival datasets. \ No newline at end of file From be7b29283cdc03a7bc24b44a0b6de0367f5eeed6 Mon Sep 17 00:00:00 2001 From: aydawka Date: Tue, 24 Feb 2026 22:17:26 -0800 Subject: [PATCH 05/12] =?UTF-8?q?fix:=20=F0=9F=90=9B=20update=20graph=20sc?= =?UTF-8?q?hema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/swh-s3-athena.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/blog/swh-s3-athena.md b/blog/swh-s3-athena.md index c5ff3f18..30bd7d49 100644 --- a/blog/swh-s3-athena.md +++ b/blog/swh-s3-athena.md @@ -68,13 +68,11 @@ SOFTWARE HERITAGE GRAPH DATASET SCHEMA β”‚ β”œβ”€β”€β–Ί πŸ“‹ origin_visit β”‚ - β”‚ πŸ”— origin_id β–Ό πŸ“‹ origin_visit_status (visit status) β”‚ β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β–ΊπŸ§©visit_date β”‚ - β”‚ πŸ”— snapshot_id β–Ό πŸ“‹ snapshot (repository snapshot) β”‚ @@ -100,7 +98,7 @@ SOFTWARE HERITAGE GRAPH DATASET SCHEMA β”‚ └──► πŸ“‹ revision or directory -πŸ“‹ Table πŸ”— Foreign key ──► Relationship 🧩 Selected attributes from tables +πŸ“‹ Table ──► Relationship 🧩 Selected attributes from tables ``` As illustrated, these elements reside in separate tables. We initially attempted to construct a single join query spanning all six tables: From e09c39f9349a76d5782cba68fdff19ac3faa3dd9 Mon Sep 17 00:00:00 2001 From: aydawka Date: Wed, 25 Feb 2026 18:26:30 -0800 Subject: [PATCH 06/12] =?UTF-8?q?fix:=20=F0=9F=90=9B=20update=20graph=20sc?= =?UTF-8?q?hema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/swh-s3-athena.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/blog/swh-s3-athena.md b/blog/swh-s3-athena.md index 30bd7d49..d8ccbbb0 100644 --- a/blog/swh-s3-athena.md +++ b/blog/swh-s3-athena.md @@ -259,14 +259,15 @@ GROUP BY url; As a result, the dataset was reduced to approximately 225 million rows. After excluding records with empty sha1_git values, the final dataset contained approximately 223 million rows. ## Computational Cost Breakdown Across Processing Steps -Due to the large scale of the Software Heritage (SWH) dataset, processing can be costly. In this work, the approximate cost breakdown for each step is presented in the table below. +Due to the large scale of the Software Heritage (SWH) dataset, processing can be costly. Amazon Athena charges $5 per terabyte of data scanned, and while the SWH dataset itself is publicly hosted at no storage cost, any intermediate tables created during processing are stored in your own S3 bucket and incur standard storage fees (~$0.023 per GB/month). In this work, the approximate cost breakdown for each step is presented in the table below. + | Step | Stage Description | Data Scanned | Cost (USD) | |------|-------------------|--------------|------------| | 1 | Accessing SWH via Athena | Minimal | Minimal | -| 2 | Extracting URLs and Visit Data | ~660 GB | ~$3.3| -| 3 | Linking Snapshots to Revisions | ~1.84 TB | ~$9.2 | -| 4 | Extracting README Entries | ~26 TB | ~$130.0 | -| 5 | Resolving Git SHA-1 to Canonical SHA-1 | ~1.4 TB | ~$7.0 | +| 2 | Extracting URLs and Visit Data | ~660 GB | ~$3.30 | +| 3 | Linking Snapshots to Revisions | ~1.84 TB | ~$9.20 | +| 4 | Extracting README Entries | ~26 TB | ~$130.00 | +| 5 | Resolving Git SHA-1 to Canonical SHA-1 | ~1.4 TB | ~$7.00 | | 6 | GitHub Filtering and Deduplication | Minimal | Minimal | Although working with materialized local tables improved performance, operations involving the largest SWH tables remained expensive. In particular, Step 4 was the most demanding stage, as the directory_entry table is among the largest in the dataset, making it the most computationally intensive and costly component of the workflow. From 3419191f517be66196f4d5fa596dd54e10a10b03 Mon Sep 17 00:00:00 2001 From: aydawka Date: Mon, 2 Mar 2026 00:00:11 -0800 Subject: [PATCH 07/12] =?UTF-8?q?fix:=20=F0=9F=90=9B=20grammar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/swh-s3-athena.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/blog/swh-s3-athena.md b/blog/swh-s3-athena.md index d8ccbbb0..de63546a 100644 --- a/blog/swh-s3-athena.md +++ b/blog/swh-s3-athena.md @@ -29,7 +29,6 @@ For more than a decade, the Software Heritage initiative has led one of the most ## Prerequisites Before we get started, you'll need to make sure you have access to the following: - AWS account with permissions to use Amazon Athena and S3 - - Access to the public Software Heritage Graph Dataset stored in S3 - An S3 bucket you control to store intermediate and final query outputs ### To Setup AWS S3 bucket @@ -48,7 +47,7 @@ s3:ListBucket ``` ### Step 1. Accessing the Software Heritage Graph -We began by defining an external table in Amazon Athena pointing to the Software Heritage Graph snapshot dated 2025-10-08, stored as Parquet files on S3, in order to query the origin data. +We begin by defining an external table in Amazon Athena pointing to the Software Heritage Graph snapshot dated 2025-10-08, stored as Parquet files on S3, in order to query the origin data. ```sql CREATE EXTERNAL TABLE IF NOT EXISTS swh_graph_2025_10_08.origin ( id STRING, @@ -58,7 +57,7 @@ STORED AS PARQUET LOCATION 's3://softwareheritage/graph/2025-10-08/origin/'; ``` -Once the external tables were defined in Athena, our initial objective was to retrieve repository URLs, visit dates, and SHA-1 identifiers. To achieve this, it was necessary to understand the structure of the Software Heritage (SWH) graph schema, a simplified representation of which is shown below: +Once the external tables are defined in Athena, our initial objective is to retrieve repository URLs, visit dates, and SHA-1 identifiers. To achieve this, it is necessary to understand the structure of the Software Heritage (SWH) graph schema, a simplified representation of which is shown below: ```text SOFTWARE HERITAGE GRAPH DATASET SCHEMA @@ -101,7 +100,7 @@ SOFTWARE HERITAGE GRAPH DATASET SCHEMA πŸ“‹ Table ──► Relationship 🧩 Selected attributes from tables ``` -As illustrated, these elements reside in separate tables. We initially attempted to construct a single join query spanning all six tables: +An initial attempt might look like joining six tables as shown below: these elements reside in separate tables. We initially attempted to construct a single join query spanning all six tables: ```sql -- Initial attempt: single-pass join (exceeded resource limits) SELECT o.url, ovs.date AS visit_date, c.sha1 AS content_sha1 @@ -115,7 +114,7 @@ WHERE sb.target_type = 'revision' AND de.type = 'file'; ``` This query exceeded Athena's execution limits due to the enormous size of the underlying tables and the unpartitioned nature of the SWH Graph dataset. On Athena, joining multiple large unpartitioned tables greatly increases scan and shuffle costs, making a single full join impractical. More detailed information about the structure and design of the SWH dataset can be found in the corresponding Software Heritage article. -Consequently, in order to obtain the SHA-1 identifiers, we adopted a stepwise strategy: each table was saved locally as an intermediate table, and the joins were performed incrementally. +Consequently, in order to obtain the SHA-1 identifiers, we adopted a stepwise strategy: each table is saved locally as an intermediate table, and the joins are performed incrementally. ### Step 2. Extracting Repository URLs and Visit Data @@ -185,7 +184,7 @@ JOIN swh_graph_2025_10_08.revision r ``` ### Step 4: Extracting README Entries -Once we obtained the necessary foreign key to proceed, we moved to one of the largest tables in the Software Heritage database. This was the most computationally intensive step, scanning approximately 24 TB of data. To avoid timeouts and resource limit errors, we restricted our query to retrieve only four specific README file typesβ€”README.md, readme.md, README, and README.txtβ€”by matching their corresponding hexadecimal filename encodings. +Once we obtained the necessary foreign key to proceed, we moved to one of the largest tables in the Software Heritage database. This is the most computationally intensive step, scanning approximately 24 TB of data. To avoid timeouts and resource limit errors, we restricted our query to retrieve only four specific README file typesβ€”README.md, readme.md, README, and README.txtβ€”by matching their corresponding hexadecimal filename encodings. ```sql CREATE TABLE default.directory_entry_readme AS @@ -206,7 +205,7 @@ WHERE type = 'file' Once we retrieved the directory-level sha1_git values, we decomposed the query into three incremental steps. First, we extracted the distinct content_sha1_git values from the intermediate result set. Next, we joined this reduced set against the content table to retrieve only the matching sha1_git–sha1 pairs. Finally, we performed the join between the original URL/date dataset and the filtered content results. -By materializing intermediate tables and reducing the join cardinality at each stage, we were able to avoid exhaustion errors and complete the retrieval successfully. +By materializing intermediate tables and reducing the join cardinality at each stage, we are able to avoid exhaustion errors and complete the retrieval successfully. ```sql CREATE TABLE default.url_date_directory_sha_3b AS @@ -241,7 +240,7 @@ By following the steps above, we retrieved over 450 million GitHub repository re ### Step 6. Deduplicating Repositories -We then filtered the URLs so that each appeared only once, retaining a single record per repository. The most recent visit date was selected for each URL, with MAX_BY ensuring the associated content hash corresponded to that latest snapshot. +We then filtered the URLs so that each appeared only once, retaining a single record per repository. The most recent visit date is selected for each URL, with MAX_BY ensuring the associated content hash corresponded to that latest snapshot. ```sql CREATE TABLE default.filtered_github_total_table AS SELECT url, content_sha1_git, sha1, visit_date @@ -256,7 +255,7 @@ SELECT FROM default.filtered_github_total_table GROUP BY url; ``` -As a result, the dataset was reduced to approximately 225 million rows. After excluding records with empty sha1_git values, the final dataset contained approximately 223 million rows. +As a result, the dataset is now reduced to approximately 225 million rows. After excluding records with empty sha1_git values, the final dataset contained approximately 223 million rows. ## Computational Cost Breakdown Across Processing Steps Due to the large scale of the Software Heritage (SWH) dataset, processing can be costly. Amazon Athena charges $5 per terabyte of data scanned, and while the SWH dataset itself is publicly hosted at no storage cost, any intermediate tables created during processing are stored in your own S3 bucket and incur standard storage fees (~$0.023 per GB/month). In this work, the approximate cost breakdown for each step is presented in the table below. From 16ccebfe6e151bb614a68175aedcc63173068125 Mon Sep 17 00:00:00 2001 From: aydawka Date: Tue, 17 Mar 2026 08:37:37 -0700 Subject: [PATCH 08/12] =?UTF-8?q?fix:=20=F0=9F=90=9B=20sequence?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/swh-s3-athena.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/blog/swh-s3-athena.md b/blog/swh-s3-athena.md index de63546a..0d219782 100644 --- a/blog/swh-s3-athena.md +++ b/blog/swh-s3-athena.md @@ -28,10 +28,10 @@ For more than a decade, the Software Heritage initiative has led one of the most ## Prerequisites Before we get started, you'll need to make sure you have access to the following: - - AWS account with permissions to use Amazon Athena and S3 - - An S3 bucket you control to store intermediate and final query outputs + - An AWS account with an IAM user or role + - Correct permissions attached to your IAM user or role -### To Setup AWS S3 bucket +### Setup AWS S3 bucket 1. Create (or confirm) an S3 bucket for Athena outputs @@ -41,12 +41,13 @@ Before we get started, you'll need to make sure you have access to the following 2. Verify that your IAM role or user has the required S3 permissions for Athena result storage: ```bash -s3:PutObject -s3:GetObject -s3:ListBucket + athena:StartQueryExecution, athena:GetQueryExecution, athena:GetQueryResults, athena:StopQueryExecution + glue:GetTable, glue:GetDatabase, glue:GetPartitions + s3:PutObject, s3:GetObject, s3:ListBucket ``` ### Step 1. Accessing the Software Heritage Graph + We begin by defining an external table in Amazon Athena pointing to the Software Heritage Graph snapshot dated 2025-10-08, stored as Parquet files on S3, in order to query the origin data. ```sql CREATE EXTERNAL TABLE IF NOT EXISTS swh_graph_2025_10_08.origin ( From ea542aec61a52adfc946713282d33d9f907b201b Mon Sep 17 00:00:00 2001 From: aydawka Date: Tue, 17 Mar 2026 09:45:01 -0700 Subject: [PATCH 09/12] =?UTF-8?q?fix:=20=F0=9F=90=9B=20tense?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/swh-s3-athena.md | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/blog/swh-s3-athena.md b/blog/swh-s3-athena.md index 0d219782..8b9204d4 100644 --- a/blog/swh-s3-athena.md +++ b/blog/swh-s3-athena.md @@ -2,9 +2,9 @@ title: Retrieving Data from the Software Heritage S3 Graph Dataset Using Amazon Athena authors: - 'AydanGasimova' -date: '2026-02-25' +date: '2026-03-25' category: 'Guide' -heroImage: 'https://images.unsplash.com/photo-1743183988574-e8b4d2e5830a?q=80&w=830&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' +heroImage: 'https://images.unsplash.com/photo-1483736762161-1d107f3c78e1?q=80&w=1374&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' imageAuthor: 'Marco Palumbo' imageAuthorLink: 'https://unsplash.com/@sapporo2025' subtitle: 'Retrieving Data from the Software Heritage S3 Graph Dataset Using Amazon Athena.' @@ -22,6 +22,9 @@ Software is a critical component of modern scientific and technological progress In this blog, we perform a step-by-step traversal of the Software Heritage Graph Dataset using Amazon Athena to produce a filtered, deduplicated set of GitHub README content hashes. We then walk through retrieving the selected content into a local AWS S3 bucket within a controlled environment. Working with an archive at this scale is inherently challenging, but a structured traversal combined with practical query orchestration enables a systematic and reproducible workflow. Finally, a brief cost breakdown for each stage of the pipeline will be provided. +These results will be further developed and implemented in Phase II and the final phase of the Data Sharing Index (β€œS-Index”) Challenge of National Institutes of Health. If you want the full working stack to follow along or reuse, check out the [fairdataihub/s-index](https://github.com/data-S-index/s-index-pipeline/tree/main/src/sindex/sources/swh) repository. + + ## Mission of Software Heritage For more than a decade, the Software Heritage initiative has led one of the most comprehensive efforts to archive and preserve publicly available source code worldwide. Its mission is to systematically collect, safeguard, and provide long-term access to the global software commons, ensuring that research software and open-source contributions remain discoverable, citable, and reusable over time. Today, the archive contains billions of source files spanning millions of repositories across diverse ecosystems, captured as a fully deduplicated Merkle DAG and stored in Apache Parquet format through public S3 buckets, forming a structured and queryable archive measured in terabytes. Beyond its scale, the archive’s strength lies in its graph-based structure: rather than traditional repository folders, Software Heritage models software as interconnected tables where every object is hash-addressed and deduplicated. While this architecture enables reproducibility at scale, retrieving specific data requires understanding the graph traversal path, as described in the following paragraphs. @@ -49,6 +52,7 @@ Before we get started, you'll need to make sure you have access to the following ### Step 1. Accessing the Software Heritage Graph We begin by defining an external table in Amazon Athena pointing to the Software Heritage Graph snapshot dated 2025-10-08, stored as Parquet files on S3, in order to query the origin data. + ```sql CREATE EXTERNAL TABLE IF NOT EXISTS swh_graph_2025_10_08.origin ( id STRING, @@ -59,6 +63,7 @@ LOCATION 's3://softwareheritage/graph/2025-10-08/origin/'; ``` Once the external tables are defined in Athena, our initial objective is to retrieve repository URLs, visit dates, and SHA-1 identifiers. To achieve this, it is necessary to understand the structure of the Software Heritage (SWH) graph schema, a simplified representation of which is shown below: + ```text SOFTWARE HERITAGE GRAPH DATASET SCHEMA @@ -101,7 +106,7 @@ SOFTWARE HERITAGE GRAPH DATASET SCHEMA πŸ“‹ Table ──► Relationship 🧩 Selected attributes from tables ``` -An initial attempt might look like joining six tables as shown below: these elements reside in separate tables. We initially attempted to construct a single join query spanning all six tables: +An initial attempt might look like joining six tables as shown below: ```sql -- Initial attempt: single-pass join (exceeded resource limits) SELECT o.url, ovs.date AS visit_date, c.sha1 AS content_sha1 @@ -113,14 +118,14 @@ JOIN swh_graph_2025_10_08.directory_entry de ON r.directory = de.directory_id JOIN swh_graph_2025_10_08.content c ON de.target = c.sha1_git WHERE sb.target_type = 'revision' AND de.type = 'file'; ``` -This query exceeded Athena's execution limits due to the enormous size of the underlying tables and the unpartitioned nature of the SWH Graph dataset. On Athena, joining multiple large unpartitioned tables greatly increases scan and shuffle costs, making a single full join impractical. More detailed information about the structure and design of the SWH dataset can be found in the corresponding Software Heritage article. -Consequently, in order to obtain the SHA-1 identifiers, we adopted a stepwise strategy: each table is saved locally as an intermediate table, and the joins are performed incrementally. +This query exceeded Athena’s execution limits due to the enormous size of the underlying tables and the unpartitioned nature of the SWH Graph dataset. In addition, Athena lacks traditional indexing capabilities for efficient join optimization. As a result, joining multiple large unpartitioned tables significantly increases scan and shuffle costs, making a single full join impractical. More detailed information about the structure and design of the SWH dataset can be found in the corresponding Software Heritage article. +Consequently, in order to obtain the SHA-1 identifiers, we adopt a stepwise strategy: each table is saved locally as an intermediate table, and the joins are performed incrementally. ### Step 2. Extracting Repository URLs and Visit Data -We began with the origin table to retrieve all repository URLs, obtaining approximately 400 million URLs. We therefore staged intermediate results to progressively narrow the working set. Subsequently, from the origin_visit_status table, we extracted approximately 3 billion records corresponding to repository visits, each representing a crawl attempt and its associated snapshot. +We start with the origin table to retrieve all repository URLs, obtaining approximately 400 million URLs. We then stage intermediate results to progressively narrow the working set. Subsequently, from the origin_visit_status table, we extract approximately 3 billion records corresponding to repository visits, each representing a crawl attempt and its associated snapshot. ```sql CREATE TABLE default.url_and_date AS @@ -131,7 +136,7 @@ FROM swh_graph_2025_10_08.origin o JOIN swh_graph_2025_10_08.origin_visit_status ovs ON o.url = ovs.origin; ``` -Using these dates, we then retrieved the snapshot identifiers: +Using these dates, we then retrieve the snapshot identifiers: ```sql CREATE TABLE default.url_date_snapshot_2a AS SELECT @@ -147,7 +152,7 @@ WHERE ovs.snapshot IS NOT NULL; ### Step 3. Linking Snapshots to Revisions and Directories -After obtaining the snapshot IDs, attempting to save the snapshot_branch table locally exceeded Athena’s service limits. Therefore, we constrained the query to retrieve only the main and master branches, which in most repositories correspond to the principal development lines. This reduced the data volume while preserving the core revision history relevant to our analysis, although repositories whose primary development branch uses a different name may be under-represented. +After obtaining the snapshot IDs, this attempt to export the snapshot_branch table locally exceeded Athena’s service limits. Therefore, we constrained the query to retrieve only the main and master branches, which in most repositories correspond to the principal development lines. This reduces the data volume while preserving the core revision history relevant to our analysis, although repositories whose primary development branch uses a different name may be under-represented. ```sql CREATE TABLE default.snapshot_branch_filtered AS @@ -161,17 +166,17 @@ WHERE target_type = 'revision' OR name = CAST('refs/heads/master' AS VARBINARY) ); ``` -After filtering, we then obtained snapshot branches, and revision tables. +After filtering, we then obtain snapshot branches, and revision tables. ```sql CREATE TABLE default.url_date_branch_2b AS SELECT u.url, u.visit_date, - sbf.revision_id + sf.revision_id FROM default.url_date_snapshot_2a u -JOIN default.snapshot_branch_filtered sbf - ON u.snapshot_id = sbf.snapshot_id; +JOIN default.snapshot_branch_filtered sf + ON u.snapshot_id = sf.snapshot_id; CREATE TABLE default.url_date_rev_2c AS @@ -185,7 +190,8 @@ JOIN swh_graph_2025_10_08.revision r ``` ### Step 4: Extracting README Entries -Once we obtained the necessary foreign key to proceed, we moved to one of the largest tables in the Software Heritage database. This is the most computationally intensive step, scanning approximately 24 TB of data. To avoid timeouts and resource limit errors, we restricted our query to retrieve only four specific README file typesβ€”README.md, readme.md, README, and README.txtβ€”by matching their corresponding hexadecimal filename encodings. + +Once we obtain the necessary foreign key to proceed, we move to one of the largest tables in the Software Heritage database. This is the most computationally intensive step, scanning approximately 24 TB of data. To avoid timeouts and resource limit errors, we restrict our query to retrieve only four specific README file typesβ€”README.md, readme.md, README, and README.txtβ€”by matching their corresponding hexadecimal filename encodings. ```sql CREATE TABLE default.directory_entry_readme AS @@ -204,7 +210,7 @@ WHERE type = 'file' ### Step 5. Resolving Git SHA-1 to Canonical SHA-1 -Once we retrieved the directory-level sha1_git values, we decomposed the query into three incremental steps. First, we extracted the distinct content_sha1_git values from the intermediate result set. Next, we joined this reduced set against the content table to retrieve only the matching sha1_git–sha1 pairs. Finally, we performed the join between the original URL/date dataset and the filtered content results. +Once we retrieve the directory-level sha1_git values, we decompose the query into three incremental steps. First, we extract the distinct content_sha1_git values from the intermediate result set. Next, we join this reduced set against the content table to retrieve only the matching SHA1 _git and SHA1 pairs. Finally, we perform the join between the original URL/date dataset and the filtered content results. By materializing intermediate tables and reducing the join cardinality at each stage, we are able to avoid exhaustion errors and complete the retrieval successfully. @@ -241,7 +247,8 @@ By following the steps above, we retrieved over 450 million GitHub repository re ### Step 6. Deduplicating Repositories -We then filtered the URLs so that each appeared only once, retaining a single record per repository. The most recent visit date is selected for each URL, with MAX_BY ensuring the associated content hash corresponded to that latest snapshot. +We then filter the URLs so that each appears only once, retaining a single record per repository. The most recent visit date is selected for each URL, with MAX_BY ensuring the associated content hash corresponds to that latest snapshot. + ```sql CREATE TABLE default.filtered_github_total_table AS SELECT url, content_sha1_git, sha1, visit_date @@ -256,7 +263,8 @@ SELECT FROM default.filtered_github_total_table GROUP BY url; ``` -As a result, the dataset is now reduced to approximately 225 million rows. After excluding records with empty sha1_git values, the final dataset contained approximately 223 million rows. + +As a result, the dataset is reduced to approximately 225 million rows. After excluding records with empty sha1_git values, the final dataset contained approximately 223 million rows. ## Computational Cost Breakdown Across Processing Steps Due to the large scale of the Software Heritage (SWH) dataset, processing can be costly. Amazon Athena charges $5 per terabyte of data scanned, and while the SWH dataset itself is publicly hosted at no storage cost, any intermediate tables created during processing are stored in your own S3 bucket and incur standard storage fees (~$0.023 per GB/month). In this work, the approximate cost breakdown for each step is presented in the table below. From 46b65e21b1488827181e0279aefdce6104517e44 Mon Sep 17 00:00:00 2001 From: aydawka Date: Tue, 17 Mar 2026 09:48:32 -0700 Subject: [PATCH 10/12] =?UTF-8?q?feat:=20=E2=9C=A8=20add=20links?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/swh-s3-athena.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/blog/swh-s3-athena.md b/blog/swh-s3-athena.md index 8b9204d4..ce2af55e 100644 --- a/blog/swh-s3-athena.md +++ b/blog/swh-s3-athena.md @@ -18,16 +18,16 @@ tags: - Parquet --- -Software is a critical component of modern scientific and technological progress, encapsulating both practical expertise and accumulated knowledge. Preserving software is therefore essential not only to safeguard innovation but also to ensure continued access to the tools and methods that underpin research and discovery. Achieving this requires coordinated community efforts. Software Heritage is one initiative that provides common foundations for heritage preservation, science, and industry. +Software is a critical component of modern scientific and technological progress, encapsulating both practical expertise and accumulated knowledge. Preserving software is therefore essential not only to safeguard innovation but also to ensure continued access to the tools and methods that underpin research and discovery. Achieving this requires coordinated community efforts. [Software Heritage](https://docs.softwareheritage.org/index.html) is one initiative that provides common foundations for heritage preservation, science, and industry. -In this blog, we perform a step-by-step traversal of the Software Heritage Graph Dataset using Amazon Athena to produce a filtered, deduplicated set of GitHub README content hashes. We then walk through retrieving the selected content into a local AWS S3 bucket within a controlled environment. Working with an archive at this scale is inherently challenging, but a structured traversal combined with practical query orchestration enables a systematic and reproducible workflow. Finally, a brief cost breakdown for each stage of the pipeline will be provided. +In this blog, we perform a step-by-step traversal of the [Software Heritage Graph Dataset](https://docs.softwareheritage.org/devel/swh-export/graph/) using [Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/Welcome.html) to produce a filtered, deduplicated set of GitHub README content hashes. We then walk through retrieving the selected content into a local [AWS S3 bucket](https://aws.amazon.com/s3/) within a controlled environment. Working with an archive at this scale is inherently challenging, but a structured traversal combined with practical query orchestration enables a systematic and reproducible workflow. Finally, a brief cost breakdown for each stage of the pipeline will be provided. These results will be further developed and implemented in Phase II and the final phase of the Data Sharing Index (β€œS-Index”) Challenge of National Institutes of Health. If you want the full working stack to follow along or reuse, check out the [fairdataihub/s-index](https://github.com/data-S-index/s-index-pipeline/tree/main/src/sindex/sources/swh) repository. ## Mission of Software Heritage -For more than a decade, the Software Heritage initiative has led one of the most comprehensive efforts to archive and preserve publicly available source code worldwide. Its mission is to systematically collect, safeguard, and provide long-term access to the global software commons, ensuring that research software and open-source contributions remain discoverable, citable, and reusable over time. Today, the archive contains billions of source files spanning millions of repositories across diverse ecosystems, captured as a fully deduplicated Merkle DAG and stored in Apache Parquet format through public S3 buckets, forming a structured and queryable archive measured in terabytes. Beyond its scale, the archive’s strength lies in its graph-based structure: rather than traditional repository folders, Software Heritage models software as interconnected tables where every object is hash-addressed and deduplicated. While this architecture enables reproducibility at scale, retrieving specific data requires understanding the graph traversal path, as described in the following paragraphs. +For more than a decade, the Software Heritage initiative has led one of the most comprehensive efforts to archive and preserve publicly available source code worldwide. Its mission is to systematically collect, safeguard, and provide long-term access to the global software commons, ensuring that research software and open-source contributions remain discoverable, citable, and reusable over time. Today, the archive contains billions of source files spanning millions of repositories across diverse ecosystems, captured as a fully deduplicated [Merkle DAG](https://docs.ipfs.tech/concepts/merkle-dag/) and stored in [Apache Parquet](https://parquet.apache.org/) format through public S3 buckets, forming a structured and queryable archive measured in terabytes. Beyond its scale, the archive’s strength lies in its graph-based structure: rather than traditional repository folders, Software Heritage models software as interconnected tables where every object is hash-addressed and deduplicated. While this architecture enables reproducibility at scale, retrieving specific data requires understanding the graph traversal path, as described in the following paragraphs. ## Prerequisites Before we get started, you'll need to make sure you have access to the following: @@ -119,7 +119,7 @@ JOIN swh_graph_2025_10_08.content c ON de.target = c.sha1_git WHERE sb.target_type = 'revision' AND de.type = 'file'; ``` -This query exceeded Athena’s execution limits due to the enormous size of the underlying tables and the unpartitioned nature of the SWH Graph dataset. In addition, Athena lacks traditional indexing capabilities for efficient join optimization. As a result, joining multiple large unpartitioned tables significantly increases scan and shuffle costs, making a single full join impractical. More detailed information about the structure and design of the SWH dataset can be found in the corresponding Software Heritage article. +This query exceeded Athena’s execution limits due to the enormous size of the underlying tables and the unpartitioned nature of the SWH Graph dataset. In addition, Athena lacks traditional indexing capabilities for efficient join optimization. As a result, joining multiple large unpartitioned tables significantly increases scan and shuffle costs, making a single full join impractical. More detailed information about the structure and design of the SWH dataset can be found in the corresponding [Software Heritage article](https://upsilon.cc/~zack/research/publications/msr-2019-swh.pdf). Consequently, in order to obtain the SHA-1 identifiers, we adopt a stepwise strategy: each table is saved locally as an intermediate table, and the joins are performed incrementally. From ea7843ba0bdc2a635d406d0bdc656df9485e3302 Mon Sep 17 00:00:00 2001 From: aydawka Date: Fri, 20 Mar 2026 10:28:18 -0700 Subject: [PATCH 11/12] =?UTF-8?q?fix:=20=F0=9F=90=9B=20typos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/swh-s3-athena.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/blog/swh-s3-athena.md b/blog/swh-s3-athena.md index ce2af55e..659ec75e 100644 --- a/blog/swh-s3-athena.md +++ b/blog/swh-s3-athena.md @@ -14,7 +14,7 @@ tags: - Software Heritage - AWS - AWS S3 bucket - - Athena api + - Athena API - Parquet --- @@ -34,7 +34,7 @@ Before we get started, you'll need to make sure you have access to the following - An AWS account with an IAM user or role - Correct permissions attached to your IAM user or role -### Setup AWS S3 bucket +### Set up AWS S3 bucket 1. Create (or confirm) an S3 bucket for Athena outputs @@ -210,7 +210,7 @@ WHERE type = 'file' ### Step 5. Resolving Git SHA-1 to Canonical SHA-1 -Once we retrieve the directory-level sha1_git values, we decompose the query into three incremental steps. First, we extract the distinct content_sha1_git values from the intermediate result set. Next, we join this reduced set against the content table to retrieve only the matching SHA1 _git and SHA1 pairs. Finally, we perform the join between the original URL/date dataset and the filtered content results. +Once we retrieve the directory-level sha1_git values, we decompose the query into three incremental steps. First, we extract the distinct content_sha1_git values from the intermediate result set. Next, we join this reduced set against the content table to retrieve only the matching SHA1_git and SHA1 pairs. Finally, we perform the join between the original URL/date dataset and the filtered content results. By materializing intermediate tables and reducing the join cardinality at each stage, we are able to avoid exhaustion errors and complete the retrieval successfully. From c3472b535bd175be3055d29190edd708d5f29a86 Mon Sep 17 00:00:00 2001 From: aydawka Date: Fri, 20 Mar 2026 12:06:23 -0700 Subject: [PATCH 12/12] =?UTF-8?q?fix:=20=F0=9F=90=9B=20update=20the=20imag?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/swh-s3-athena.md | 50 ++++++---------------------------- public/images/blog/athena.png | Bin 0 -> 207600 bytes 2 files changed, 9 insertions(+), 41 deletions(-) create mode 100644 public/images/blog/athena.png diff --git a/blog/swh-s3-athena.md b/blog/swh-s3-athena.md index 659ec75e..9c51f69a 100644 --- a/blog/swh-s3-athena.md +++ b/blog/swh-s3-athena.md @@ -64,47 +64,15 @@ LOCATION 's3://softwareheritage/graph/2025-10-08/origin/'; Once the external tables are defined in Athena, our initial objective is to retrieve repository URLs, visit dates, and SHA-1 identifiers. To achieve this, it is necessary to understand the structure of the Software Heritage (SWH) graph schema, a simplified representation of which is shown below: -```text -SOFTWARE HERITAGE GRAPH DATASET SCHEMA - -πŸ“‹ origin (origin record) - β”‚ - β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β–ΊπŸ§©URL - β”‚ - β”œβ”€β”€β–Ί πŸ“‹ origin_visit - β”‚ - β–Ό -πŸ“‹ origin_visit_status (visit status) - β”‚ - β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β–ΊπŸ§©visit_date - β”‚ - β–Ό -πŸ“‹ snapshot (repository snapshot) - β”‚ - β–Ό -πŸ“‹ snapshot_branch (branches) - β”‚ - β”œβ”€β”€β–Ί πŸ“‹ revision (commit) - β”‚ β”‚ - β”‚ β”œβ”€β”€β–Ί πŸ“‹ directory (root directory) - β”‚ β”‚ β”‚ - β”‚ β”‚ β–Ό - β”‚ β”‚ πŸ“‹ directory_entry - β”‚ β”‚ β”‚ - β”‚ β”‚ β”œβ”€β”€β–Ί πŸ“‹ content (file content) - β”‚ β”‚ β”‚ - β”‚ β”‚ β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β–ΊπŸ§©SHA1 - β”‚ β”‚ β”‚ - β”‚ β”‚ └──► πŸ“‹ directory (subdirectory) - β”‚ β”‚ - β”‚ └──► πŸ“‹ revision_history (parent commits) - β”‚ - └──► πŸ“‹ release (release tag) - β”‚ - └──► πŸ“‹ revision or directory - -πŸ“‹ Table ──► Relationship 🧩 Selected attributes from tables -``` +
+ Software heritage relational schema +
+ Software heritage relational schema. + + See details here. + +
+
An initial attempt might look like joining six tables as shown below: ```sql diff --git a/public/images/blog/athena.png b/public/images/blog/athena.png new file mode 100644 index 0000000000000000000000000000000000000000..cc2c58c628da76200c762980b5bfc60fdc3f399d GIT binary patch literal 207600 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