Skip to content

AWS Glue alternative — AWS Glue vs Skippr ​

AWS Glue is Spark ETL in your AWS account. You write a Spark or Python Shell or Ray job (Glue Studio visual, a notebook, or a script), pick a Glue version, and pay DPU-hours. A DPU is 4 vCPU and 16 GB. us-east-1 list for Glue 5.x Spark is 0.44 USD per DPU-hour, billed per second with a one-minute minimum. Glue 6.0 (August 2026) lists a 30 percent cut (0.308 USD per DPU-hour), Spark 4.1, Python 3.13, and Iceberg v3 (VARIANT, deletion vectors, geometry). Jobs without an explicit version still default to the 5.1 rate card. Flex is cheaper; memory-optimized R is higher. Crawlers, interactive sessions, Iceberg compaction, and table statistics use the same DPU meter. The Data Catalog is free for the first million objects and the first million accesses a month. Glue 5.0 ships Iceberg 1.7.1; you still query Athena, Redshift, or EMR after the job. Streaming jobs bill for as long as they run. This is not a Streamhouse. There is no Iceberg ∪ WAL in Glue.

Skippr is an open Streamhouse you run as one Rust binary. Write skippr.yml (or the same thing in Python), discover, sync. You query live state over Iceberg ∪ WAL, and the history is ordinary Iceberg in your bucket. No DPU. ELT into a warehouse is one path, not the product.

FeatureSkipprAWS Glue
DeploySingle Rust binary, your VPC or on-premGlue job in an AWS account. Studio, notebooks, or scripts
SchemaIn-stream evolution, sibling columnsSpark / Data Catalog. Iceberg v3 adds DEFAULT and UNKNOWN
StorageOpen Iceberg on Parquet you ownS3 plus Data Catalog. Iceberg, Hudi, or Delta as a job dest
CDCLog-based; fails closed if the dest cannot honourStreaming jobs or a separate DMS task. Not fail-closed WAL
Queryskipprd query on Iceberg ∪ WAL; history in any Iceberg engineAthena / Redshift / EMR after the job. Compaction is extra DPUs
PricingFree self-hosted engineDPU-hours. 0.44 USD on 5.x; Glue 6.0 lists 0.308 USD.

What AWS Glue is good at ​

A Spark job that already lands Parquet in a bucket your Athena workgroup reads. That is the product. Data Catalog plus Lake Formation is why some estates treat Glue as the lake control plane, not ELT. Iceberg writers and managed compaction are real if you already run AWS analytics. If the job is "Spark in this account," that is a real product.

Where the job is wider ​

Glue is a job runtime. It is not a Streamhouse. There is no Iceberg ∪ WAL. There is no skipprd query on in-flight rows. The job ends; then you query Athena.

DPU math is the ops. A streaming CDC job bills every second it is up. Compaction is another DPU line. Version 6.0 is cheaper only after you pin the job; unset versions stay on 5.1 rates.

Skippr will not run a Glue job. Skippr also will not replace Lake Formation grants or the Data Catalog. If the job is "Spark we already staff," Glue is the narrower tool. If the job is live SQL on Iceberg you run as one binary, Glue was never that.

Getting started ​

Install skipprd from the install guide, or pip install skippr. The three tabs write the same skippr.yml. Then discover, sync, and query.

yaml
skippr:
  workspace: analytics
  skipprd_el_storage_mode: local

pipelines:
  orders:
    data_source: data_sources.app_db
    data_sink: data_sinks.lake

data_sources:
  app_db:
    Postgres:
      host: db.internal
      user: skippr_reader
      password: ${APP_DB_PASSWORD}
      database: app
      tables: [orders, customers]
      cdc_mode: snapshot_then_cdc

data_sinks:
  lake:
    AthenaIceberg:
      warehouse: s3://my-iceberg-warehouse/
      glue_database_name: analytics
      athena_workgroup_name: primary
      athena_results_s3_bucket: my-athena-results
      region: us-east-1
    schema_sink: schema_sinks.lake_schema

schema_sinks:
  lake_schema:
    AthenaIceberg:
      warehouse: s3://my-iceberg-warehouse/
      glue_database_name: analytics
      athena_workgroup_name: primary
      athena_results_s3_bucket: my-athena-results
      region: us-east-1
bash
skipprd --workspace analytics --storage-mode local connect data-source postgres \
  --pipeline orders \
  --name app_db \
  --host db.internal \
  --user skippr_reader \
  --password '${APP_DB_PASSWORD}' \
  --database app \
  --tables orders \
  --tables customers \
  --cdc-mode snapshot_then_cdc

skipprd connect data-sink athenaiceberg \
  --pipeline orders \
  --name lake \
  --warehouse s3://my-iceberg-warehouse/ \
  --glue-database-name analytics \
  --athena-workgroup-name primary \
  --athena-results-s3-bucket my-athena-results \
  --region us-east-1

skipprd connect schema-sink athenaiceberg \
  --pipeline orders \
  --name lake_schema
python
from skippr import (
    Config,
    DataSinkAthenaIceberg,
    DataSourcePostgres,
    DataSourcePostgresSourceCdcMode,
    EnvRef,
    LocalStorage,
    Pipeline,
)

cfg = Config().workspace("analytics").storage(LocalStorage())

app_db = cfg.data_source(
    "app_db",
    DataSourcePostgres(
        host="db.internal",
        user="skippr_reader",
        password=EnvRef("APP_DB_PASSWORD"),
        database="app",
        tables=["orders", "customers"],
        cdc_mode=DataSourcePostgresSourceCdcMode.SNAPSHOTTHENCDC,
    ),
)

lake = cfg.data_sink(
    "lake",
    DataSinkAthenaIceberg(
        warehouse="s3://my-iceberg-warehouse/",
        glue_database_name="analytics",
        athena_workgroup_name="primary",
        athena_results_s3_bucket="my-athena-results",
        region="us-east-1",
    ),
    schema_sink="lake_schema",
)

cfg.pipeline("orders", Pipeline(data_source=app_db, data_sink=lake))
cfg.save("skippr.yml")
bash
export APP_DB_PASSWORD='your-postgres-password'
skipprd discover --pipeline orders
skipprd sync --pipeline orders --once
skipprd query "SELECT count(*) FROM analytics.orders"

Which to choose ​

Choose AWS Glue if you want Spark jobs in an AWS account, and Athena after the job is enough.

Choose Skippr if you want one binary, live SQL, and Iceberg files that stay yours. Skippr will not run a Glue job.

Install from Install. Connector and query reference live in Developer Docs. For optional onboarding in your VPC, Enterprise Jumpstart or Contact.