StreamSets alternative — StreamSets vs Skippr
IBM StreamSets is a drag-and-drop pipeline studio. Control Hub is the plane. You pick a pipeline type. Data Collector streams records from one origin through processors to one or more destinations, continuously. Transformer runs set operations (joins, aggregates, sorts) on Apache Spark. Transformer for Snowflake turns the graph into SQL and hands it to Snowpark. CDC origins stamp sdc.operation.type (insert, update, delete, upsert) so a CRUD destination can apply it. Data drift processors try to keep the graph alive when a column appears. There is a Python SDK. IBM bought StreamSets in 2024. The current list price is 1,050 USD per virtual processor core per month, four VPCs minimum, twelve-month commit. The Team pack starts at 4,200 USD a month. Business Unit starts at 25,200. Enterprise starts at 105,000. Those figures are indicative. Cloud Pak and watsonx.data integration are other IBM doors. Data Collector engines still exist as Java processes you deploy; the product you buy is Control Hub.
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 VPC meter. ELT into a warehouse is one path, not the product.
| Feature | Skippr | StreamSets |
|---|---|---|
| Deploy | Single Rust binary, your VPC or on-prem | Control Hub SaaS or Cloud Pak. Data Collector / Transformer engines in your cloud or on-prem |
| Schema | In-stream evolution, sibling columns | Drift processors on the graph. Catalog is per stage |
| Storage | Open Iceberg on Parquet you own | Destination you wired. Data Collector has no native Iceberg writer |
| CDC | Log-based; fails closed if the dest cannot honour | CDC origins plus sdc.operation.type on CRUD dests |
| Query | skipprd query on Iceberg ∪ WAL; history in any Iceberg engine | Destination after the pipeline. Transformer SQL is Spark or Snowflake, not a lake |
| Pricing | Free self-hosted engine | 1,050 USD per VPC per month, four-VPC floor. See IBM's packs. |
What StreamSets is good at
The split is honest. Record-at-a-time streaming is Data Collector. Whole-set Spark is Transformer. Snowflake-only SQL is Transformer for Snowflake. You do not pretend one engine does all three. Drift-aware processors and a preview in the canvas are why ops teams keep a graph running when a SaaS payload grows a field. CDC headers are a real contract, not a checkbox. If you already sit in IBM's catalog and want a low-code stream into Snowflake or Kafka, that is a real product.
Where the job is wider
StreamSets is a pipeline studio. It is not a Streamhouse. There is no Iceberg ∪ WAL. There is no skipprd query on in-flight rows. Data Collector takes one origin. Iceberg is not on the destination list; you land in S3, a warehouse, or a lake product that speaks Iceberg later.
The meter is cores, not rows. Four VPCs at the list rate is 4,200 USD a month before anyone draws a second graph. Packs quote pipeline counts and records per second as packaging, not a SLA you can take to finance without IBM. Engines still need Java, Spark, or a Snowflake warehouse.
Skippr will not give you Control Hub, the three pipeline types, or IBM's drift processors. Skippr also will not replace a 300-pipeline Control Hub estate. If the job is "draw a stream and pay IBM per core," StreamSets is the narrower tool. If the job is live SQL on Iceberg you run, StreamSets 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.
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-1skipprd --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_schemafrom 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")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 StreamSets if you want IBM's canvas, three pipeline engines, and a warehouse or Kafka after the graph is enough.
Choose Skippr if you want one binary, no VPC meter, live SQL, and Iceberg files that stay yours. Skippr will not replace Control Hub.
Install from Install. Connector and query reference live in Developer Docs. For optional onboarding in your VPC, Enterprise Jumpstart or Contact.
