Apache Cassandra
Official · maintained by Marmotmarmotdata/cassandra Discover keyspaces, tables and materialized views from Apache Cassandra clusters
The Cassandra plugin discovers keyspaces, tables and materialized views from Apache Cassandra clusters. It reads the system_schema tables over CQL with the pure-Go gocql driver, so it works with Cassandra 3.0 and later and needs no cgo.
Tables and views are named keyspace.table, the same identity the OpenMetadata plugin projects for a Cassandra service, so the two routes land on one asset.
Required Permissions
The user needs to read the schema tables, plus the keyspaces it should preview sample data from:
CREATE ROLE marmot_reader WITH PASSWORD = 'your-password' AND LOGIN = true;
GRANT SELECT ON KEYSPACE system_schema TO marmot_reader;
GRANT SELECT ON KEYSPACE your_keyspace TO marmot_reader;
Statistics
Column and index counts are reported per table. A row count is not: Cassandra keeps no row estimate and COUNT(*) is a full cluster scan.
Known Gaps
DataStax Astra secure connect bundles are not supported. Connect with hosts and ssl instead.
In the UI
Point-and-click, no config file needed.
- 1 Open Runs Create pipeline
- 2 Pick Apache Cassandra from the plugin list.
- 3 Fill in the wizard, set a schedule, save.
With the CLI
Save a YAML config, then run marmot ingest.
name: my-cassandra-pipeline
runs:
- cassandra:
hosts: []$ marmot ingest -c ingest.yamlNot using plugins? Other ways to populate Marmot
Configuration
18 top-level fields. * marks required fields.
tags multiselect Tags to apply to discovered assets
external_links object[] External links to show on all assets
name string Display name for the link
icon string Icon identifier for the link
url string URL to the external resource
filter object Filter discovered assets by name (regex)
include multiselect Include patterns for resource names (regex)
exclude multiselect Exclude patterns for resource names (regex)
hosts multiselect Contact points, as host or host:port
port int Port for contact points given without one
- default
- 9042
username string Username for password authentication
password password Password for password authentication
datacenter string Local datacenter; only its nodes are queried when set
ssl bool Connect over TLS
- default
- false
ssl_ca_cert string Path to the CA certificate that signed the server certificate
ssl_skip_verify bool Skip verification of the server certificate
- default
- false
connect_timeout_seconds int Seconds to wait for a connection
- default
- 10
keyspaces multiselect Keyspaces to discover; all non-system keyspaces when empty
exclude_system_keyspaces bool Whether to skip Cassandra's own keyspaces (system, system_schema, system_auth, ...)
- default
- true
include_columns bool Whether to include column information in table metadata
- default
- true
include_views bool Whether to include materialized views
- default
- true
include_indexes bool Whether to include secondary index information
- default
- true
include_statistics bool Whether to include column and index counts
- default
- true
Assets emitted
Metadata this plugin attaches to each discovered asset.
Keyspace
CassandraKeyspaceFieldsThe metadata fields the Cassandra plugin emits for keyspace assets.
keyspace stringKeyspace name
replication_class stringReplication strategy (SimpleStrategy, NetworkTopologyStrategy)
replication_factor intReplication factor when one applies to the whole keyspace
replication_factors objectReplication factor per datacenter
durable_writes boolWhether writes go through the commit log
table_count intNumber of tables in the keyspace
view_count intNumber of materialized views in the keyspace
user_types string[]User-defined types declared in the keyspace
cluster_name stringCluster name
cassandra_version stringCassandra release version of the node queried
datacenter stringDatacenter of the node queried
Table
CassandraTableFieldsThe metadata fields emitted for table and materialized view assets.
keyspace stringKeyspace the table belongs to
table_name stringTable or view name
object_type stringObject type (table, view)
id stringTable id
comment stringTable comment
compaction_class stringCompaction strategy
compression_class stringCompressor
default_ttl intDefault time to live in seconds, 0 for none
gc_grace_seconds intSeconds tombstones are kept before collection
bloom_filter_fp_chance floatBloom filter false positive chance
caching objectKey and row cache settings
flags string[]Table flags (compound, counter, dense, super)
is_counter boolWhether the table holds counter columns
partition_key string[]Partition key columns in key order
clustering_columns string[]Clustering columns in key order
clustering_order objectSort direction (asc, desc) per clustering column
indexes string[]Secondary index names
index_count intNumber of secondary indexes
base_table stringTable a materialized view is built from
where_clause stringFilter a materialized view applies to its base table
include_all_columns boolWhether a materialized view selects every base table column
Column
CassandraColumnFieldsThe per-column fields embedded in an asset's schema.
column_name stringColumn name
data_type stringCQL type as stored, for example map<text, int> or frozen<address>
is_nullable boolWhether the column can be null (false for key columns)
is_primary_key boolWhether the column is part of the partition or clustering key
kind stringColumn kind (partition_key, clustering, regular, static)
position intIndex within the partition or clustering key, -1 otherwise
clustering_order stringSort direction (asc, desc) for clustering columns