Add your description here
Project description
tkati-core
For now we assume that each node gets one input and produces one output in a form of kafka stream.
Settings
General form of settings is:
[input.topic]
# definition of input stream:
# - broker
# - topic name
# - message schema
# - message format = "json" / "arrow-batch"
[input.consumer]
# parameters local to this consumer
# - group_id
# - batch_size
# - batch_timeout_sec
# - auto_offset_reset
[output.topic]
# definition of output stream
# - broker
# - topic name
# - message schema
# - message format = "json" / "arrow-batch"
# - key_column (optional) = column to use as the Kafka message key
[...]
# settings specific to node function
Usage
Constructing a consumer from settings
Use KafkaArrowConsumer.from_input_settings to construct a consumer directly from
KafkaInputSettings — no need to manually map fields to Confluent Kafka config keys.
from tkati_core.settings import TomlBaseSettings, KafkaInputSettings
from tkati_core.consumer import KafkaArrowConsumer
class AppSettings(TomlBaseSettings):
input: KafkaInputSettings
# ...
settings = AppSettings()
consumer = KafkaArrowConsumer.from_input_settings(settings.input)
# Read a batch
table = consumer.read_to_pyarrow(
aggregation_interval_seconds=settings.input.consumer.batch_timeout_sec,
max_events_to_aggregate=settings.input.consumer.batch_size,
)
consumer.commit()
The factory method sets enable.auto.commit=False — offsets must be committed explicitly
via consumer.commit().
Constructing a producer from settings
Use KafkaArrowProducer.from_output_settings to construct a producer directly from
KafkaOutputSettings. It accepts PyArrow tables or record batches and handles
serialization according to the topic's format setting.
from tkati_core.settings import TomlBaseSettings, KafkaOutputSettings
from tkati_core.producer import KafkaArrowProducer
class AppSettings(TomlBaseSettings):
output: KafkaOutputSettings
# ...
settings = AppSettings()
producer = KafkaArrowProducer.from_output_settings(settings.output)
# Produce a PyArrow table (one message per row for "json" format)
producer.produce(table)
producer.flush()
producer.close() # flushes and releases resources
Formats — controlled by output.topic.format in settings.toml:
"json"(default): each row becomes a separate Kafka message serialized with orjson."arrow-batch": the entire table is serialized as a single Arrow IPC stream message.
Message keys — controlled by output.topic.key_column in settings.toml:
[output.topic]
broker = "localhost:9092"
name = "my-output-topic"
key_column = "customer_id" # column whose value becomes the Kafka message key
key_column is optional. When omitted (or None), messages are produced without a key.
When set, the value of that column for each row is used as the Kafka message key
(JSON format only — ignored for "arrow-batch"). This determines which Kafka partition
each message is routed to.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tkati_core-0.2.0.tar.gz.
File metadata
- Download URL: tkati_core-0.2.0.tar.gz
- Upload date:
- Size: 7.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Manjaro Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebba53be343bf53f2c5c70285d76de9aa40b05ed3ca0f181d54b699bd15e313c
|
|
| MD5 |
758297dbd39d74af00bc900f31ac8518
|
|
| BLAKE2b-256 |
a66a367eca478ac9882fecd771b0c2b06d23ff44d307794407fa4b6b6555279e
|
File details
Details for the file tkati_core-0.2.0-py3-none-any.whl.
File metadata
- Download URL: tkati_core-0.2.0-py3-none-any.whl
- Upload date:
- Size: 3.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Manjaro Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ca5a08dc09c84bb104e53c084ebad2b32065249624a3dcc5d0eaa63749805f8
|
|
| MD5 |
09facc9986c256aaaee5948ac484073a
|
|
| BLAKE2b-256 |
2047b04010b9b535d8c08079e0ff255b6394e57fc36b7ca5f48e0e069d3e9456
|