在使用kafka-cassandra接收器连接器存储在cassandra中之前,是否有任何向我们的消息添加时间戳的功能?

时间:2019-07-18 07:42:17

标签: cassandra apache-kafka apache-kafka-connect fluentd

我正在设置我的日志服务器。我正在使用Fluentd将日志转发到Kafka,然后将其存储在Cassandra中以备后用。为此,我正在使用kafka-cassandra接收器连接器。我必须按时间顺序存储数据,为此我需要在cassandra中为消息添加时间戳。该怎么办?

Datamountaineer连接器使用kcql,我认为它不支持在日志中插入时间戳。

我的连接器配置如下:

name=cassandra-sink
connector.class=com.datamountaineer.streamreactor.connect.cassandra.sink.CassandraSinkConnector
tasks.max=1
topics=test_AF1
connect.cassandra.kcql=INSERT INTO test_event1 SELECT now() as id, message as msg FROM test_AF1 TIMESTAMP=sys_time()
connect.cassandra.port=9042
connect.cassandra.contact.points=localhost
connect.cassandra.key.space=demo

1 个答案:

答案 0 :(得分:1)

Kafka Connect的单一消息转换可以做到这一点。这是一个示例:

Array
(
    [0] => MongoDB\Model\BSONDocument Object
        (
            [storage:ArrayObject:private] => Array
                (
                    [_id] =>
                    [total_amount] => 1000.0000
                    [total_count] => 100
                )

        )

)

这会在带有Kafka消息时间戳的{ "connector.class": "com.datamountaineer.streamreactor.connect.cassandra.sink.CassandraSinkConnector", "topics": "test_AF1", … "transforms": "addTS", "transforms.addTS.type": "org.apache.kafka.connect.transforms.InsertField$Value", "transforms.addTS.timestamp.field": "op_ts" }' 消息有效载荷中添加一个字段。

我不知道它如何与KCQL交互;您可能想查看我知道的其他两个Cassandra水槽: