禁用检查点时,Kafka010JsonTableSource不会自动提交kafka偏移量

时间:2018-01-12 10:34:51

标签: apache-kafka apache-flink

我已经建立了一个本地Kafka0.10 + Flink1.4环境。

我将以下代码用于Kafka主题的消费者数据:

val tableSource:KafkaTableSource = Kafka010JsonTableSource.builder()
.forTopic(kafkaConfig.topic)
.withKafkaProperties(props)
.withSchema(dynamicJsonSchema)
.withRowtimeAttribute(enventTimeFieldName,new ExistingField(enventTimeFieldName), new BoundedOutOfOrderTimestamps(30000L))
.build() 

tableEnv.registerTableSource(tableName, tableSource)

val tableResult:Table = tableEnv.sqlQuery(sql)

执行此代码后,始终会发现警告消息:

  

对于组taxiDataGroup,偏移{taxiData-0 = OffsetAndMetadata {offset = 728461,metadata =''}}的自动提交失败:   由于该组已经重新平衡并将分区分配给另一个成员,因此无法完成提交。   这意味着后续调用poll()的时间长于配置的max.poll.interval.ms,   这通常意味着轮询循环花费了太多时间进行消息处理。   您可以通过增加会话超时或通过max.poll.records减少poll()中返回的批量的最大大小来解决此问题。

无论我在Kafka中设置的是什么属性,它总是显示上面的警告信息。

  {
    "propertyKey": "enable.auto.commit",
    "propertyValue": "true"
  },
  {
    "propertyKey": "session.timeout.ms",
    "propertyValue": "250000"
  },
  {
    "propertyKey": "request.timeout.ms",
    "propertyValue": "305000"
  },
  {
    "propertyKey": "auto.commit.interval.ms",
    "propertyValue": "800000"
  },
  {
    "propertyKey": "max.poll.records",
    "propertyValue": "300"
  },
  {
    "propertyKey": "max.poll.interval.ms",
    "propertyValue": "300000"
  }

我不确定Kafka010JsonTableSource Flink1.4是否会自动提交偏移量。但测试结果表明它不会自动提交偏移量。任何人都可以帮助确认这个问题吗?或者你能在我的代码中看到任何其他问题吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过设置低于经纪人session.timeout.ms值的group.max.session.timeout.ms值?根据{{​​3}},这似乎是个问题。