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

水印策略不适用于Flink中的Kafka消费者

惠洛华
2023-03-14

我是Flink的新手,所以在定义Flink中的水印时,我面临一些问题。

让我们从Kafka消费者开始。使用的反序列化是JSONKeyValueDeserializationSchema,因此没有自定义解析。

val kafkaConsumer: FlinkKafkaConsumer[ObjectNode] = new FlinkKafkaConsumer[ObjectNode](
  kafkaTopic,
  new JSONKeyValueDeserializationSchema(false),
  properties
)

如果将接收器应用于此代码,则其工作正常。问题是需要水印来避免无序事件。这就是我写的策略:

 val watermarkStrategy: WatermarkStrategy[ObjectNode] = WatermarkStrategy
  .forBoundedOutOfOrderness[ObjectNode](Duration.ofSeconds(100))
  .withTimestampAssigner(
    new SerializableTimestampAssigner[ObjectNode] {
      override def extractTimestamp(record: ObjectNode, recordTimestamp: Long): Long = {
        Instant.parse(record.get("value").get("content").get("timestamp").asText()).getEpochSecond
      }
    })

在做了一些研究后,我最终得到了这段代码,但这不起作用。这些是我的问题:

  • 在这里使用ObjectNode是最好的选择吗?还有其他选择吗
  • 字段timestamp是ISO 8601标准中的一个字符串,因此我必须将其解析为long。这是最好的方法吗?有更好的方法吗
  • SerializableTimestAssigner和ForBoundedAutoforDerness是否是正确的使用对象

共有1个答案

马欣德
2023-03-14

问题是我的语法分析

dateFormat.parse(record.get("value").get("content").get("timestamp").asText()).getTime
 类似资料:
  • 我们正在构建一个流处理管道,以使用Flink v1.11和事件时间特性来处理Kinesis消息。在定义源水印策略时,在官方留档中,我遇到了两个开箱即用的水印策略;forBoundedOutOfOrthy和forMonotonousTimestamps。但根据我对上述内容的理解,我认为这些不适合我的用法。以下是我的用法细节: 来自输入流的数据:(包含每分钟带有时间戳的数据) 现在,我想处理11:00

  • 我们正在构建一个流处理管道来处理/摄取Kafka消息。我们正在使用Flink v1.12.2。在定义源水印策略时,在官方留档中,我遇到了两种开箱即用的水印策略;forBoundedOutOfOrness和forMonotonousTimestamps。我确实浏览了javadoc,但并不完全理解何时以及为什么你应该使用一种策略而不是另一种策略。时间戳基于事件时间。谢谢。

  • 我使用flink版本1.13.0 当我试图使用flink doc的Kafka水印策略时,这似乎不起作用,窗口处理功能将不会运行。 我想知道,在Kafka中,水印的时间戳将使用消费时间还是生产时间? 我的消费者代码如下: 并像这样使用窗口: 拓扑图是这样的:

  • Flink kafka消费者有两种类型的消费者,例如: 这两个消费者层次结构扩展了相同的类。我想知道维护编号类背后的设计决策是什么?我们什么时候应该使用其中一种? 我注意到带有数字后缀的类有更多的特性(例如ratelimiting)。 https://github.com/apache/flink/blob/master/flink-connectors/flink-connector-kafka

  • 当对骆驼使用Kafka组件时,从Kafka消费时有两种方法可以重试: null org.apache.kafka.clients.Consumer.internals.AbstractCoordinator[Consumer ClientID=Consumer-1,GroupID=2862121D-DDC9-4111-A96A-41BA376C0143]此成员将离开组,因为使用者轮询超时已过期。这

  • 本文向大家介绍Kafka 消费者负载均衡策略相关面试题,主要包含被问及Kafka 消费者负载均衡策略时的应答技巧和注意事项,需要的朋友参考一下 一个消费者组中的一个分片对应一个消费者成员,他能保证每个消费者成员都能访问,如 果组中成员太多会有空闲的成员