Skip to content

feat(gizmosql): add - #289

Open
HMDank wants to merge 7 commits into
mainfrom
feat/gizmosql/add
Open

feat(gizmosql): add#289
HMDank wants to merge 7 commits into
mainfrom
feat/gizmosql/add

Conversation

@HMDank

@HMDank HMDank commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

This pull request introduces an end-to-end event stream analytics pipeline, enabling Redpanda event data to be ingested, stored as Parquet files in cloud storage, and queried using Arrow Flight SQL via GizmoSQL. The changes add new services, configuration, and documentation to support this workflow.

Event Stream Analytics Pipeline

  • Added the redpanda-connect service, which ingests events from Redpanda, transforms the data, and writes Parquet files to S3-compatible cloud storage (R2). Includes configuration for S3 credentials and data schema.
  • Added the gizmosql service, which allows querying the event stream's Parquet lakehouse using Arrow Flight SQL. Includes secure credential handling and a custom entrypoint script for environment setup and templating.

@HMDank
HMDank requested a review from dargmuesli as a code owner August 6, 2026 21:29
Comment thread artifacts/docs/README.md Outdated
Comment thread artifacts/docs/README.md Outdated
Comment thread src/development/gizmosql/compose.yaml Outdated
Comment on lines +5 to +13
r2-account-id:
# The event stream analytics' cloud storage account identifier.
file: ~~/artifacts/secrets/r2-account-id.secret
r2-aws-credentials-access-key:
# The event stream analytics' cloud storage secret access key.
file: ~~/artifacts/secrets/r2-aws-credentials-access-key.secret
r2-aws-credentials-access-key-id:
# The event stream analytics' cloud storage access key identifier.
file: ~~/artifacts/secrets/r2-aws-credentials-access-key-id.secret

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's check if it's possible to define these secrets on the shared src/development/compose.yaml or in the redpanda-connect compose file (where the credentials are used to write – writing comes before reading which gizmosql allows then). But as these credentials are used by multiple services, they should fit the shared compose file. This should be supported by dargstack already or added to it if not.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah should be doable with dargstack v4 then. I'll migrate the secrets then.

Comment thread src/development/gizmosql/compose.yaml Outdated
Comment on lines +8 to +13
# Tombstone messages (Debezium deletes) carry no payload and must be dropped.
- bloblang: |
root = if this.payload.after.or(this.after) == null { deleted() }
- mapping: |
root = this.payload.after.or(this.after)
root.operation = this.payload.op.or(this.op)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if this handles all tombstone messages correctly, I'd need to research a bit more.

Comment thread src/development/redpanda-connect/configurations/config.yaml
Comment thread src/production/redpanda-connect/compose.yaml
GF_DATABASE_PASSWORD__FILE: /run/secrets/postgres-role-service-grafana-password
GF_DATABASE_TYPE: postgres
GF_DATABASE_USER__FILE: /run/secrets/postgres-role-service-grafana-username
GF_INSTALL_PLUGINS: gizmodata-gizmosql-datasource

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think about removing all the provisioning code for Grafana and instead configure it in the live system. Provisioning codifies the initial setup and makes it more explicit in that sense but also is quite rigid and disallows changing the config in the live Grafana instance. As we want to persist configurations done in the Grafana UI anyway, we can safe ourselves from config being too rigid and extensive and just configure those connectors in the UI, I'd say.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants