CLI
The snapstream cli tool allows you to inspect any Topic
or Cache
:
snapstream --help
When providing an action; topic or cache, the configurations can be saved to a config file; ~/.snapstreamcfg, which may look like this:
[
{
"type": "Topic",
"name": "demo",
"conf": {
"bootstrap.servers": "localhost:29091",
"sasl.username": "\\$ConnectionString",
"sasl.password": "$MY_PASSWORD"
},
"schema_path": "schemas/my-schema.avsc",
"secrets_base_path": "/etc/secrets"
}
]
Environment variables may be referenced by prepending the $
character. Which can be escaped by prepending \\
in front of $
.
Cache
Starting off with a cache that has a single entry:
from snapstream import Cache
c = Cache('db')
c['123'] = {'timestamp': 123, 'value': 'A story about jack and james.'}
There are several ways to query the cache:
snapstream cache db # show all values in cache
snapstream cache db -k "123" # values where key is "123"
snapstream cache db -k "^\d" # values where key starts with a digit
Regular expressions also work on values:
snapstream cache db -v "^(?=.*?\bjack\b).*?\bjames\b.*"
>>> key: 123
{'timestamp': 123, 'value': 'A story about jack and james.'}
Fields can be filtered when a dictionary is returned:
snapstream cache db -c "value," # column names are comma separated
>>> key: 123
{'value': 'A story about jack and james.'}
To see the live files of the cache and the total size, pass the --stats
flag:
snapstream cache db --stats
Statistics:
[
{
"name": "/000009.sst",
"size": 1059,
"level": 0,
"start_key": "123",
"end_key": "123",
"num_entries": 1,
"num_deletions": 0
}
]
Folder size: 0.034 mb
Topic
The same filtering logic applies for topics.
Pass an avro schema filepath to deserialize avro messages:
snapstream topic my-topic --schema schemas/my-schema.avsc
>>> timestamp: 2023-05-20T12:00:00.000000+00:00
>>> offset: 0
>>> key: '123'
{'value': 'A story about jack and james.'}
Start reading from a given offset:
snapstream topic my-topic -o -1 # read from latest (default)
snapstream topic my-topic -o -2 # read from start
snapstream topic my-topic -o 33 # read from specific offset
>>> timestamp: 2023-05-20T12:00:00.000000+00:00
>>> offset: 33
>>> key: '456'
{'timestamp': 156, 'value': 'They discovered two pillars and a stairway.'}
The --stats
flag is not available for topics.