OpenLineage Integration
Feast provides native integration with OpenLineage, enabling automated data lineage tracking across ML feature engineering workflows. Feast supports both producer and consumer roles — emitting lineage events for its own operations and receiving lineage from any OpenLineage-compatible system for unified visualization.
Quick Start
1. Install
pip install feast[openlineage]
# or: pip install openlineage-python2. Configure
# feature_store.yaml
project: my_project
registry:
registry_type: sql
path: sqlite:///data/registry.db
provider: local
online_store:
type: sqlite
path: data/online_store.db
openlineage:
enabled: true
transport_type: console # or http, file, kafka
namespace: my_project
consumer:
enabled: true
store_type: sql3. Apply and View
Open http://localhost:8888 and navigate to the Lineage tab to view the full lineage graph, including both the Feast registry view and the OpenLineage view.
Overview
When enabled, the integration automatically emits OpenLineage events for:
Registry changes — events when feature views, on-demand feature views, feature services, entities, data sources, and saved datasets are applied
Feature materialization — START, COMPLETE, and FAIL events when features are materialized
No code changes required — enable OpenLineage in your feature_store.yaml to begin tracking lineage automatically.
Prerequisites
SQL registry required for consumer: The OpenLineage consumer stores lineage data in SQL tables. Enabling the consumer requires the Feast registry to use
registry_type: sql(SQLite, PostgreSQL, or MySQL). File-based registries are not supported for the consumer. The producer operates with any registry type.
Producer Configuration
Add the openlineage section to your feature_store.yaml:
Environment Variables
You can also configure via environment variables:
Configuration Options
enabled
false
Enable/disable OpenLineage integration
transport_type
None
Transport type: http, console, file, kafka. When unset, defers to OpenLineage SDK defaults
transport_url
—
Base URL for HTTP transport (required when transport_type is http)
transport_endpoint
api/v1/lineage
API endpoint appended to transport_url for HTTP transport
api_key
—
Optional API key for authentication with the lineage server
namespace
feast
Namespace for lineage events. When set to feast (default), the Feast project name is used
producer
feast
Producer identifier included in every OpenLineage event
emit_on_apply
true
Emit lineage events when feast apply is called
emit_on_materialize
true
Emit lineage events during materialization
additional_config
{}
Extra transport-specific settings (e.g., log_file_path for file transport, bootstrap_servers for Kafka)
Namespace Behavior
If
namespaceis"feast"(default): uses the project name as the namespace (e.g.,my_project)If
namespaceis set to a custom value: uses{namespace}/{project}(e.g.,custom/my_project)
Usage
Once configured, lineage is tracked automatically:
Lineage Graph Structure
When you run feast apply, Feast creates lineage events reflecting the full dependency graph:
Jobs created per feast apply:
feast_apply_entities
—
Entity datasets
feast_apply_data_sources
—
DataSource datasets
feast_apply_feature_view_{name}
DataSource + Entity
FeatureView dataset
feast_apply_odfv_{name}
FeatureView + RequestSource
OnDemandFeatureView dataset
feast_apply_feature_service_{name}
FeatureView(s) + ODFV(s)
FeatureService dataset
feast_apply_saved_dataset_{name}
FeatureService + DataSource
SavedDataset dataset
Datasets include:
OpenLineage
SchemaDatasetFacetwith feature names, types, and descriptionsFeast-specific facets with rich metadata (TTL, entities, owner, tags, etc.)
Feast to OpenLineage Mapping
DataSource
InputDataset
FeastDataSourceFacet
Entity
InputDataset
FeastEntityFacet
FeatureView
OutputDataset (of FV job) / InputDataset (of FS or ODFV job)
FeastFeatureViewFacet
OnDemandFeatureView
OutputDataset
FeastFeatureViewFacet (with mode: ON_DEMAND)
StreamFeatureView
OutputDataset
FeastFeatureViewFacet (with mode: STREAM)
FeatureService
OutputDataset
FeastFeatureServiceFacet
SavedDataset
OutputDataset
FeastSavedDatasetFacet
Feature
Schema field in SchemaDatasetFacet
—
Materialization
RunEvent (START/COMPLETE/FAIL)
FeastMaterializationFacet
Online Store (per FV)
OutputDataset (materialization target)
FeastOnlineStoreFacet
Custom Feast Facets
The integration includes custom OpenLineage facets that carry Feast-specific metadata:
FeastFeatureViewFacet
Captures metadata about feature views (regular, on-demand, and stream):
name
Feature view name
ttl_seconds
Time-to-live in seconds (0 = no TTL)
entities
List of entity names
features
List of feature names
online_enabled / offline_enabled
Store configuration
mode
Transformation mode: ON_DEMAND, STREAM, PYTHON, PANDAS, etc.
description
Human-readable description
owner
Owner identifier
tags
Key-value tags
FeastFeatureServiceFacet
Captures metadata about feature services:
name
Feature service name
feature_views
List of feature view names
feature_count
Total number of features
description
Description
owner
Owner identifier
tags
Key-value tags
logging_enabled
Whether feature logging is enabled
FeastDataSourceFacet
Captures metadata about data sources:
name
Data source name
source_type
Type: FileSource, BigQuerySource, SnowflakeSource, RequestSource, etc.
timestamp_field
Event timestamp column name
created_timestamp_field
Created timestamp column name
field_mapping
Source-to-feature field mapping
description
Description
tags
Key-value tags
FeastEntityFacet
Captures metadata about entities (join keys for feature lookups):
name
Entity name
join_keys
List of join key column names
value_type
Data type (INT64, STRING, etc.)
description
Description
owner
Owner identifier
tags
Key-value tags
FeastSavedDatasetFacet
Captures metadata about saved datasets (materialized feature snapshots):
name
Saved dataset name
features
List of feature names
join_keys
List of join key column names
feature_service_name
Name of the FeatureService that produced this dataset
full_feature_names
Whether full feature names were used
description
Description
tags
Key-value tags
FeastMaterializationFacet
Captures materialization run metadata (attached to RunEvents):
feature_views
Feature views being materialized
start_date / end_date
Materialization time window
project
Feast project name
rows_written
Number of rows written
online_store_type
Online store backend type
offline_store_type
Offline store backend type
FeastOnlineStoreFacet
Identifies the online store sink during materialization:
feature_view
Feature view whose features are stored
store_type
Online store backend (redis, sqlite, dynamodb, etc.)
description
Description
FeastProjectFacet
Captures Feast project context on job events:
project_name
Feast project name
provider
Infrastructure provider (local, gcp, aws)
online_store_type
Online store type
offline_store_type
Offline store type
registry_type
Registry type (file, sql)
FeastJobKindFacet
Distinguishes Feast jobs by semantic role:
kind
definition (registry/apply events) or transform (runtime materialize/compute)
feast_project
Feast project name
FeastRetrievalFacet
Captures feature retrieval metadata:
retrieval_type
online or historical
feature_service
Feature service name (if used)
feature_views
Feature views queried
features
Features retrieved
entity_count
Number of entities queried
full_feature_names
Whether full feature names were used
Transport Types
HTTP Transport (Recommended for Production)
Console Transport (Development)
Events are printed to stdout. This transport is recommended for development and troubleshooting purposes.
File Transport
Kafka Transport
Lineage Visualization
Option 1: Feast UI (Built-in Consumer)
Feast includes a built-in OpenLineage consumer that receives, stores, and visualizes lineage from all OpenLineage producers directly in the Feast UI. See the OpenLineage Consumer section below.
Option 2: Marquez
Use Marquez to visualize your Feast lineage:
Configure Feast to emit to Marquez:
Access the Marquez UI at http://localhost:3000.
OpenLineage Consumer
Feast can act as an OpenLineage consumer, receiving lineage events from any OpenLineage-compatible producer and displaying them in the Feast UI. This provides a unified lineage experience without requiring a separate metadata platform such as Marquez.
Consumer Architecture
When the consumer is not enabled, the Feast UI shows only the original registry-based lineage view.
Enabling the Consumer
Add the consumer section under openlineage in your feature_store.yaml:
Or via environment variables:
Consumer Configuration Options
consumer.enabled
false
Enable the OpenLineage consumer
consumer.store_type
sql
Storage backend type. Currently only sql is supported
consumer.connection_string
—
Separate database connection string for lineage storage. If omitted, the SQL registry database is used
consumer.api_key
—
API key required by producers when submitting events
consumer.namespace_mapping
{}
Maps external OpenLineage namespaces to Feast project names for RBAC scoping (see Namespace Mapping)
consumer.retention_days
30
Number of days to retain events and runs. Set to 0 to disable automatic pruning
consumer.retention_check_interval_hours
6
Interval (in hours) between background pruning cycles
consumer.standalone_server
false
When true, the retention background task is delegated to the standalone lineage server. All consumer API endpoints remain available on both servers
Event Retention
The consumer includes an automatic retention policy that prunes expired events and runs to prevent unbounded storage growth. By default, data older than 30 days is removed every 6 hours.
Pruned data: Events (openlineage_events) and runs (openlineage_runs, openlineage_run_io) exceeding the configured retention period.
Preserved data: The current-state graph (jobs, datasets, edges, symlinks) is never pruned. These tables represent the latest lineage topology and are independent of historical event data.
To disable automatic pruning:
Environment variables:
FEAST_OPENLINEAGE_CONSUMER_RETENTION_DAYS
30
Retention period in days
FEAST_OPENLINEAGE_CONSUMER_RETENTION_CHECK_INTERVAL_HOURS
6
Pruning check interval in hours
API endpoints:
GET /api/v1/lineage/openlineage/retention— returns current retention config and storage stats (row counts, oldest timestamps)POST /api/v1/lineage/openlineage/retention/prune— manually trigger pruning (requires API key)
Running the Server
The feast ui command starts a unified server that provides:
The Feast UI with integrated lineage visualization
OpenLineage consumer endpoints for both event ingestion and lineage queries
Access to the Feast registry
When both producer and consumer are enabled, Feast events generated by feast apply and materialization operations are automatically ingested into the local consumer store through an internal event pipeline. No additional HTTP transport configuration is required for self-reporting.
Consumer API Endpoints
When the consumer is enabled, the following endpoints are available. All paths shown are relative to the server mount point (e.g., /api/v1 on the UI server).
Event Ingestion (Producer-facing)
/api/v1/lineage
POST
Receive a single OpenLineage event (or array of events). Returns 201 for single events, 200 for batch
/api/v1/lineage/batch
POST
Receive a batch of OpenLineage events. Returns 204 on full success
Both endpoints accept the X-API-Key header (or Authorization: Bearer <key>) when consumer.api_key is configured.
Lineage Query Endpoints (UI-facing)
/api/v1/lineage/openlineage/graph
GET
Full lineage graph with nodes, edges, and symlinks. Supports ?namespace=X, ?limit=N, ?offset=N
/api/v1/lineage/openlineage/graph/{node_type}/{namespace}/{name}
GET
Lineage subgraph centered on a specific node. Supports ?depth=N, `?direction=both
/api/v1/lineage/openlineage/namespaces
GET
List all distinct namespaces
/api/v1/lineage/openlineage/events
GET
Browse events with ?namespace=X, ?job_name=Y, ?limit=N, ?offset=N
/api/v1/lineage/openlineage/jobs
GET
List all known jobs
/api/v1/lineage/openlineage/datasets
GET
List all known datasets
/api/v1/lineage/openlineage/runs
GET
List runs with ?job_namespace=X&job_name=Y, ?limit=N, ?offset=N
/api/v1/lineage/openlineage/runs/{run_id}
GET
Single run detail with input/output datasets
Registry Lineage Endpoints
/api/v1/lineage/registry
GET
Feast registry lineage with ?project=X
/api/v1/lineage/registry/all
GET
Registry lineage for all projects
/api/v1/lineage/objects/{object_type}/{object_name}
GET
Detail for a specific registry object
/api/v1/lineage/complete
GET
Complete registry lineage with full object metadata
/api/v1/lineage/complete/all
GET
Complete registry lineage for all projects
Admin Endpoints
/api/v1/lineage/openlineage/reset
DELETE
Purge all OpenLineage data. Accepts ?namespace=X to delete a specific namespace only. Requires API key
Configuring External Producers
Any OpenLineage-compatible producer can be configured to send events to the Feast consumer. The standard ingestion endpoint is POST /api/v1/lineage.
Airflow
Spark
dbt
Feast (Self-reporting)
When both the OpenLineage producer and consumer are enabled in the same feature_store.yaml, Feast events generated by feast apply and materialization operations are automatically ingested into the local consumer store through an internal event pipeline. No additional HTTP transport configuration is required.
Producer Discovery (Kubernetes)
In a Kubernetes cluster with multiple OpenLineage producers (Spark, Airflow, dbt, and others), each producer requires the consumer endpoint URL. The Feast Operator automates this by creating a centralized discovery ConfigMap that producers can mount or reference.
Automatic Discovery ConfigMap
When a FeatureStore CR has an enabled OpenLineage consumer, the operator creates a ConfigMap named feast-openlineage-config in the controller namespace (e.g., feast-operator-system on plain Kubernetes, or the operator's namespace on OpenShift). This ConfigMap is readable by all authenticated users via a Role + RoleBinding.
The ConfigMap contains three data keys:
openlineage.yml
YAML
Ready-to-mount OpenLineage client config with transport URL and endpoint
url
String
Plain consumer base URL for simple env-var injection
endpoints
JSON
Registry of all Feast instances with enabled consumers (for multi-consumer clusters)
Example ConfigMap content:
Method 1: Mount as openlineage.yml (Recommended)
Mount the ConfigMap as a file and set the OPENLINEAGE_CONFIG environment variable. This works with all OpenLineage producers (Python, Java, Spark, Airflow, dbt):
Method 2: Environment Variable Injection
For simpler setups, inject the URL directly from the ConfigMap:
If API key authentication is enabled, also inject:
Method 3: FeatureStore CR Status
The lineage server hostname is exposed in the FeatureStore CR status:
This approach is suitable for scripts and automation workflows that interact with the Kubernetes API.
Multi-Consumer Clusters
When multiple Feast instances have OpenLineage consumers enabled, the endpoints key in the ConfigMap contains a registry of all available consumers. Producers can parse this JSON to select the appropriate consumer based on the Feast instance namespace or name:
The openlineage.yml and url keys default to the most recently registered consumer. In multi-consumer environments, producers should reference the endpoints key for explicit consumer targeting.
Cross-Namespace Access
The discovery ConfigMap is created in the controller namespace. Producers in other namespaces reference it by specifying the namespace:
Note: Cross-namespace ConfigMap references in volume mounts require the Pod's ServiceAccount to have
getaccess to the ConfigMap. The operator creates a Role and RoleBinding grantingsystem:authenticatedread access to the discovery ConfigMap.
Feast UI Lineage Views
When the consumer is enabled, the lineage page in the Feast UI provides two views:
OpenLineage Graph (default when events exist)
Shows lineage from all OpenLineage producers in a unified graph
Nodes are color-coded by Feast object type (DataSource, Entity, FeatureView, FeatureService, etc.)
Clicking a node opens a detail panel with description, schema, tags, features, entities, facets, and run history (for job nodes)
Supports filtering by namespace
Feast Only Lineage (checkbox toggle)
Shows the registry-based lineage view: DataSource → FeatureView → FeatureService, Entity → FeatureView, and OnDemandFeatureView relationships
Powered entirely by the Feast registry — works independently of OpenLineage configuration
When the consumer is enabled but has no events yet, this view is shown by default with the toggle visible to switch between views
Cross-Producer Lineage Connectivity
The consumer automatically links datasets across different producers when they refer to the same physical data:
Shared namespace + name — when Airflow writes to
s3://bucket/pathand Spark reads from the sames3://bucket/path, the consumer automatically links them in the graphSymlinksDatasetFacet — producers can declare aliases (e.g., Feast declaring its
driver_hourly_statsis a symlink tos3://bucket/features/driver_hourly_stats/)dataSource URI matching — datasets with matching
dataSource.urifacets are linked even if their namespace or name differ
RBAC for Lineage
The OpenLineage consumer integrates with Feast's existing RBAC — no new permissions or AuthzedAction values are introduced:
Write access (producers sending events): authenticated via API key in the
X-API-Keyheader. Any authenticated producer can send events.Read access (UI viewing lineage): based on existing Feast project permissions. Users who can
DESCRIBEa Feast project see lineage from that project's namespace plus any external namespaces mapped to it vianamespace_mapping.
Namespace Mapping
The consumer.namespace_mapping configuration is a read-side RBAC bridge that maps external OpenLineage namespaces to Feast project names. It controls who can see what in the lineage UI and API — it does not rewrite, reroute, or alter ingested events.
Events are always stored exactly as the producer sent them, with their original namespace intact.
How It Works
When RBAC is enabled, each API query determines which namespaces the current user may see:
List all Feast projects the user can
DESCRIBE(existing Feast RBAC).For each allowed project, resolve its OpenLineage namespace.
Scan
namespace_mapping— for each entry whose value (Feast project name) matches an allowed project, add that entry's key (external namespace) to the allowed set.Filter all query results to only include data from the allowed namespaces.
Configuration
In feature_store.yaml:
Or via environment variable (JSON format):
Cross-Producer Example
A user with DESCRIBE permission on the ml_team Feast project can view lineage from all four producers in a single unified graph.
Namespace Resolution for Feast Object Mapping
Beyond RBAC, namespace_mapping helps the event processor map incoming datasets to Feast registry objects during ingest. When a dataset arrives with namespace spark://ml-team, the processor resolves it to Feast project ml_team and can match the dataset against known Feast objects in that project.
Resolution priority:
Exact match —
namespace_mapping["spark://ml-team"]→"ml_team"Authority/path match — for
scheme://authority/pathnamespaces, try the authority+path portionFallback — use the last path segment as the project name
When Namespace Mapping Is Not Needed
Single-project setups: if you only have one Feast project and no external producers, the default behavior (namespace = project name) works without mapping.
Feast-only lineage: the Feast Only Lineage view operates purely on registry data and does not use
namespace_mapping.No RBAC: when Feast RBAC is disabled, all namespaces are visible to all users. Mapping is still used for Feast object resolution during ingest.
Per-Run Lineage (Run History)
The consumer tracks individual pipeline runs. When you click on a job node in the OpenLineage Graph, the detail panel shows a Run History section with:
A table of past runs: run ID, status badge (COMPLETE, FAIL, RUNNING, ABORT), start time, and duration
Click any run to see its specific inputs and outputs — the datasets that run consumed and produced
Lineage Cleanup / Reset
Admin Reset Endpoint
Use DELETE /api/v1/lineage/openlineage/reset to purge lineage data:
Feast Teardown Hook
When you run feast teardown, Feast automatically cleans up OpenLineage data for the project's namespace (if the consumer is configured).
Separate Lineage Server Deployment
For production environments requiring independent scaling of the lineage subsystem, the OpenLineage consumer can be deployed as a dedicated server, separate from the Feast registry and UI services.
When to Use Standalone vs Embedded
Consideration
Embedded (default)
Standalone (lineageServer)
Deployment simplicity
Single process, no extra resources
Separate Deployment + Service
Lineage ingestion volume
Low-to-moderate (< 100 events/min)
High-volume multi-producer environments
Resource isolation
Shares CPU/memory with registry
Independent scaling and resource limits
Registry impact
Heavy ingestion may affect registry latency
No impact on core Feast operations
Retention pruning
Runs in registry process
Runs exclusively in standalone server
Recommended for
Development, single-team setups
Production, multi-team or cross-platform lineage
Performance note: In embedded mode, the lineage consumer shares database connections and compute resources with the Feast registry. If multiple external producers (Spark, Airflow, dbt) submit high-volume lineage events concurrently, this may increase registry response times. For such environments, use the standalone deployment to isolate lineage processing from core Feast operations.
Standalone CLI
Run the lineage consumer as a standalone process:
This starts a dedicated server with only the OpenLineage consumer endpoints, independent of the registry and UI services. It reads feature_store.yaml for the openlineage.consumer configuration and optionally connects to the registry for RBAC enforcement when authorization is configured.
Operator CRD
When deploying with the Feast Operator, add lineageServer to the consumer config to create a separate Kubernetes Deployment:
When lineageServer is configured:
Separate Deployment: The operator creates a
feast-<name>-lineageDeployment runningfeast serve_lineage, with its own Service on port 6580.Auto-transport: The producer
transport_urlon the main Feast Deployment is automatically configured to point to the lineage Service (http://feast-<name>-lineage.<namespace>.svc.cluster.local:6580).Full API on both: Both the UI/registry server and the lineage server expose the complete consumer API (read and write). They share the same SQL database, so there is no conflict. The retention background task runs only on the standalone lineage server.
Database: The lineage server uses the consumer's
connectionStringSecretRefif provided, otherwise falls back to the SQL registry database.RBAC: When authz is configured in the CR, the lineage server connects to the registry Service as a remote client for permission checks.
Manual configuration
For non-operator deployments, set standalone_server: true in the consumer configuration to delegate the retention background task to the standalone lineage server:
API Contract
The Feast OpenLineage consumer exposes two categories of API endpoints:
OpenLineage-standard ingest endpoints — compliant with the OpenLineage HTTP API spec (v2.0.2)
Feast-specific query and admin endpoints — for lineage visualization, retention management, and data administration
OpenLineage-Standard Endpoints (Ingest)
These endpoints are fully compatible with any OpenLineage producer (Spark, Airflow, dbt, Flink, etc.) using the standard HTTP transport.
POST
/api/v1/lineage
Receive a single RunEvent, DatasetEvent, or JobEvent
POST
/api/v1/lineage/batch
Receive an array of events in a single request
Authentication: API key via X-API-Key header or Authorization: Bearer <key> header.
Required for: ingest endpoints (
POST /lineage,POST /lineage/batch), admin endpoints (POST .../retention/prune,DELETE .../reset)Not required for: read-only query endpoints (graph, catalog, events, runs)
When
consumer.api_keyis not configured, all endpoints are open.
Matches the OpenLineage Python client's api_key auth type.
Request body: application/json — accepts the standard OpenLineage event schema including all facets.
Response codes:
201
Single event accepted
200
Batch processed with summary ({status, summary: {received, successful, failed}})
204
Batch processed silently (all events succeeded)
207
Batch partially succeeded (summary includes failure count)
400
Invalid JSON or unexpected body format
401
API key required but missing or invalid
Producer configuration example (any OpenLineage producer):
Feast-Specific Endpoints (Query & Admin)
These endpoints power the Feast lineage UI and are available for custom integrations. They are not part of the OpenLineage spec — every consumer (Marquez, DataHub, Atlan) defines its own query API.
Lineage Graph:
GET
/api/v1/lineage/openlineage/graph
Full lineage graph (nodes + edges + symlinks), with optional ?namespace= and ?limit=/?offset=
GET
/api/v1/lineage/openlineage/graph/{node_type}/{namespace}/{name}
Subgraph around a specific node, with ?depth= and ?direction= (upstream/downstream/both)
Catalog:
GET
/api/v1/lineage/openlineage/namespaces
List all known namespaces
GET
/api/v1/lineage/openlineage/jobs
List all jobs across producers
GET
/api/v1/lineage/openlineage/datasets
List all datasets across producers
Events & Runs:
GET
/api/v1/lineage/openlineage/events
List events with ?namespace=, ?job_name=, ?limit=, ?offset=
GET
/api/v1/lineage/openlineage/runs
List runs with ?job_namespace=, ?job_name=, ?limit=, ?offset=
GET
/api/v1/lineage/openlineage/runs/{run_id}
Single run detail with input/output datasets
Retention & Admin:
GET
/api/v1/lineage/openlineage/retention
Current retention config and storage stats
POST
/api/v1/lineage/openlineage/retention/prune
Manually trigger retention pruning (requires API key)
DELETE
/api/v1/lineage/openlineage/reset
Purge all or namespace-specific lineage data (requires API key)
RBAC filtering: All query endpoints automatically filter results by the calling user's permitted namespaces when Feast authz is configured. The namespace_mapping config maps external producer namespaces to Feast projects for access control.
API Availability in Deployment Modes
Embedded (consumer in UI/registry server)
Available
Available
Runs here
Standalone (separate lineage server)
Available on both servers
Available on both servers
Runs on lineage server only
Both servers share the same SQL database, so all endpoints are fully functional on either server. The standalone lineage server exclusively owns the background retention pruning task to avoid duplicate work.
Database Schema
The consumer creates the following tables automatically during initial startup:
openlineage_events
Raw event storage with JSON payloads
openlineage_jobs
Deduplicated job records with producer, description, and facets
openlineage_datasets
Deduplicated dataset records with schema, facets, and Feast object mapping
openlineage_runs
Run lifecycle tracking (START/COMPLETE/FAIL)
openlineage_run_io
Input/output relationships between runs and datasets
openlineage_lineage_edges
Materialized lineage graph edges for efficient traversal
openlineage_dataset_symlinks
Cross-producer dataset linking via SymlinksDatasetFacet and dataSource URI matching
By default these tables are created in the same database as the SQL registry. Set consumer.connection_string to use a separate database.
Last updated
Was this helpful?