在日志中,我看到KafkaTopicPartition不能用作POJO,这意味着什么

时间:2019-01-02 15:16:53

标签: apache-flink flink-streaming

这不是错误,但是我确实看到此行,根据消息可能会影响性能:

2019-01-02 14:44:44,879 INFO  org.apache.flink.api.java.typeutils.TypeExtractor             
- class org.apache.flink.streaming.connectors.kafka.internals.KafkaTopicPartition 
does not contain a setter for field topic
2019-01-02 14:44:44,879 INFO  org.apache.flink.api.java.typeutils.TypeExtractor             
- Class class org.apache.flink.streaming.connectors.kafka.internals.KafkaTopicPartition 
cannot be used as a POJO type because not all fields are valid POJO fields, 
and must be processed as GenericType. Please read the Flink documentation on "Data Types & Serialization" 
for details of the effect on performance.
 2019-01-02 14:44:44,884 INFO  org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase  - No restore state for FlinkKafkaConsumer.

这是我可以/需要做的事情吗?

1 个答案:

答案 0 :(得分:1)

关于不能用作POJO类型的类型的声明是在INFO级别而不是WARN上记录的,因为它通常并不特别相关。但是它有时确实指示可能导致性能问题的类。这是因为Flink能够对POJO类(具有空默认构造函数和公共字段,或公共getter和setters的类)使用其自己的,性能更高的序列化框架,否则将退回到Kyro。

如果这是您的应用程序对象之一,并且如果要序列化和反序列化它们的很多,那么可以,这是考虑做些事情的。但是在这种情况下,不会。这是各种Flink / Kafka连接器使用的内部对象,不应更改。