当前位置: 首页 > 知识库问答 >
问题:

如何更改记录的时间戳?

彭弘伟
2023-03-14

我正在使用FluentD(v.12最后一个稳定版本)向Kafka发送消息。但是FluentD正在使用一个旧的KafkaProducer,所以记录时间戳总是设置为-1。因此,我必须使用WallclockTimestampExtrator将记录的时间戳设置为消息到达kafka时的时间点。

是否有特定于Kafka Streams的解决方案?

我真的感兴趣的时间戳,是由Fluentd在消息中发送的:

“时间戳”:“1507885936”,“主机”:“V.X.Y.Z.”

Kafka的记录表示:

offset=0,timestamp=-1,key=null,value={“timestamp”:“1507885936”,“host”:“V.X.Y.Z.”

我想在Kafka有这样的记录:

offset=0,timestamp=1507885936,key=null,value={“timestamp”:“1507885936”,“host”:“V.X.Y.Z.”

我的解决方案如下:

>

  • 写一个消费者提取时间戳(https://kafka.apache.org/0110/javadoc/org/apache/kafka/streams/processor/TimestampExtractor.html)

    编写一个生产者,用时间戳集生成一个新记录(ProducerRecord(字符串主题、整数分区、长时间戳、K键、V值)

    如果有的话,我更喜欢Kafka斯特伦的解决方案。

  • 共有1个答案

    百里鸿祯
    2023-03-14

    您可以编写一个非常简单的Kafka Streams应用程序,如:

    KStreamBuilder builder = new KStreamBuilder();
    builder.stream("input-topic").to("output-topic");
    

    并使用自定义时间戳提取器配置应用程序,从记录中提取时间戳并返回它。

    Kafka流将在将记录写回Kafka时使用返回的时间戳。

    注意:如果你有无序数据——也就是说,时间戳没有严格排序——结果也会包含无序时间戳。Kafka Streams使用返回的时间戳写回Kafka(也就是说,无论提取器返回什么,都被用作记录元数据时间戳)。注意,在写入时,当前处理的输入记录中的时间戳用于所有生成的输出记录——这在1.0版中保持不变,但在未来的版本中可能会更改。)。

    更新:

    通常,可以通过处理器API修改时间戳。调用上下文。forward()您可以通过将输出记录时间戳设置为。全部()。带时间戳(…)作为forward()的参数。

     类似资料:
    • 我正在使用FluentD(V.12最后一个稳定版本)向Kafka发送消息。但是FluentD使用的是旧的KafkaProducer,因此记录时间戳始终设置为-1。因此,我必须使用WallclockTimestampExtractor将记录的时间戳设置为消息到达Kafka时的时间点。 我真正感兴趣的时间戳是由fluentd在消息中发送的: “时间戳”:“1507885936”,“主机”:“V.X.Y

    • 问题内容: 在Python中(通过日志记录模块)临时更改日志记录消息格式的最简单方法是什么? 目标是具有某种标准的消息格式,同时能够临时添加有关正在读取的某些文件的信息(如文件名);当不再读取文件时,消息格式应恢复为其默认值。产生该消息的程序 不 知道正在读取哪个文件,因此,如果其消息自动包含相关的文件名(错误消息将是:“ 读取文件 ***时出错:…”,而不是该消息),将是很好的选择。 “错误:…

    • 我有一个,我正在尝试用它做两件事。1:只更新日期和月份。2:只更新时间。我如何实现这一点? 有什么方法可以破坏< code>currentDateTime像< code>DateTime(...当前日期时间,..newTime)

    • 我正在使用django模型。django设置中的TIMEZONE是UTC。并通过做一些算术来构建时间戳。 当我使用::timestamp时,时间戳返回为2021 07月26日00:00:00如果我使用::timestamp,它将变为2021 07月26日00:00:00,即使请求的\u时区是“美国/纽约” 我希望输出为2021 07月26日00:00:00-04:00,即显示与“附加美国/纽约”偏

    • 问题内容: 如果我在类型表中具有一列并且具有默认值:CURRENT_TIMESTAMP如果我更新同一行中 任何 其他列的值,此列是否会更新为当前时间戳? 似乎没有,但是我不确定这是否应该发生。 我不明白这是什么意思(来自MySQL文档): 如果该列是自动更新的,则当该行中任何其他列的值从其当前值更改时,它将自动更新为当前时间戳。如果所有其他列均设置为其当前值,则该列保持不变。为防止当其他列更改时该