ingesting-into-data-lake

Import data from files, databases, and cloud warehouses into AWS S3 Tables or Iceberg.

Updated Jul 1, 2026
One-click install
npx skills add https://github.com/sakicodes/BuildFestHackathon26 --skill ingesting-into-data-lake-sakicodes
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ingesting-into-data-lake
Source: https://github.com/sakicodes/BuildFestHackathon26/tree/main/.agents/skills/ingesting-into-data-lake
Command: npx skills add https://github.com/sakicodes/BuildFestHackathon26 --skill ingesting-into-data-lake-sakicodes

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Moving data from S3 files, local uploads, JDBC databases, Snowflake, BigQuery, DynamoDB, or existing Glue catalog tables into a queryable AWS data lake involves many source-specific steps, connection checks, and format decisions. This Skill orchestrates the entire ingestion workflow so data lands correctly in S3 Tables or standard Iceberg without manual trial and error. ## Core Features & Use Cases - Multi-source ingestion: Load data from local files, S3 files (CSV, JSON, Parquet, Avro, ORC), JDBC databases (Oracle, SQL Server, PostgreSQL, MySQL, RDS, Aurora, Redshift), Snowflake, BigQuery, DynamoDB, and existing Glue catalog tables. - Target-aware writes: Defaults to S3 Tables with Glue 5.1+ and correct Iceberg catalog configuration, falling back to standard Iceberg or raw Parquet based on the account's existing posture. - Validation and scheduling: Enforces row-count, null, and spot-check validation after every load, and sets up Glue Triggers or MWAA for recurring pipelines. - Use Case: A user asks to migrate a 200 GB Hive table from the Glue catalog into S3 Tables. The Skill classifies the source, selects Glue ETL over Athena CTAS due to size, generates the PySpark migration job, runs it, and validates row counts and partitions. ## Quick Start Ask the assistant to import your data, for example: load the CSV files from s3://my-bucket/raw/ into a new S3 Tables table in the analytics namespace.

Frequently Asked Questions about ingesting-into-data-lake

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I import data from Snowflake into AWS S3 Tables?

Create a Glue connection of type Snowflake first, then use a Glue 5.1+ PySpark job that reads via the connection and writes with writeTo() to the S3 Tables catalog. The job needs the --datalake-formats iceberg argument and catalog config passed through --conf.

How do I migrate a Glue catalog table to S3 Tables?

For tables under roughly 100 GB, use Athena CTAS targeting s3tablescatalog with optional Iceberg partition transforms. For larger tables or complex transforms, use a Glue ETL PySpark job that reads from the Glue Data Catalog and writes with createOrReplace().

Does DynamoDB ingestion require a Glue connection?

No, DynamoDB does not need a Glue connection. Small tables can be read directly by Glue using the dynamodb connection type, while medium and large tables should use native export-table-to-point-in-time to S3, which consumes no read capacity.

Why does my Glue job fail with Cannot modify the value of a static config?

This error occurs when Spark catalog configuration is set via spark.conf.set() inside the script. In Glue 5.x, all spark.sql.catalog.* settings must be passed in the --conf job argument instead, and S3 Tables configs must include the warehouse parameter.

What sources are not supported for data lake ingestion?

SaaS and streaming sources such as Salesforce, ServiceNow, SAP, MongoDB, and Kafka are not supported by this ingestion workflow. Connection setup and troubleshooting are also out of scope and handled by a separate connection skill.

Athena CTAS vs Glue ETL for large table migration?

Athena CTAS works for tables under about 100 GB but has a 100-partition limit per statement and a 30-minute timeout. Glue ETL handles larger tables, complex PySpark transforms, and scheduled repeatable migrations with configurable worker counts.