【问题标题】:My FlinkKafkaProducer011 needs fewer arguments than is supposed to我的 FlinkKafkaProducer011 需要的参数比预期的要少
【发布时间】:2020-11-30 21:34:07
【问题描述】:

我在使用 FlinkKafkaConnector 时遇到了问题。

虽然我已经导入了org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer011,但我得到了以下错误。

Too many arguments for constructor FlinkKafkaProducer011

根据this site,参数是正确的。但是,我的 IntelliJ 显示了这个定义。

public FlinkKafkaProducer011() {
}

有人知道怎么解决吗?

更新

这是 IDE 定义。

public class FlinkKafkaProducer011 {
    public FlinkKafkaProducer011() {
    }

    public static class NextTransactionalIdHint extends org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.NextTransactionalIdHint {
        public NextTransactionalIdHint() {
        }
    }

    public static class TransactionStateSerializer {
        public TransactionStateSerializer() {
        }

        public static final class TransactionStateSerializerSnapshot extends SimpleTypeSerializerSnapshot<KafkaTransactionState> {
            public TransactionStateSerializerSnapshot() {
                super(org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.TransactionStateSerializer::new);
            }
        }
    }

    public static class ContextStateSerializer {
        public ContextStateSerializer() {
        }

        public static final class ContextStateSerializerSnapshot extends SimpleTypeSerializerSnapshot<KafkaTransactionContext> {
            public ContextStateSerializerSnapshot() {
                super(org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.ContextStateSerializer::new);
            }
        }
    }

    public static class NextTransactionalIdHintSerializer {
        public NextTransactionalIdHintSerializer() {
        }

        public static final class NextTransactionalIdHintSerializerSnapshot extends SimpleTypeSerializerSnapshot<org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.NextTransactionalIdHint> {
            public NextTransactionalIdHintSerializerSnapshot() {
                super(org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.NextTransactionalIdHintSerializer::new);
            }
        }
    }
}

【问题讨论】:

    标签: java scala apache-kafka apache-flink flink-streaming


    【解决方案1】:

    能否请您指定您使用的flink-connector-kafka 版本?

    据我所知,您使用的org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer011 只是flink-connector-kafka_2.11 jar 中的一个兼容类,正确的生产者是org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer

    据我了解,javadoc https://ci.apache.org/projects/flink/flink-docs-release-1.4/api/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaProducer011.html 与来自flink-connector-kafka-0.11_2.11 工件的org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer011 生产者相关。

    所以,我建议要么切换到org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer,要么将依赖项更改为flink-connector-kafka-0.11_2.11 jar。

    【讨论】:

    • 感谢您的回复!我已更改为使用flink-connector-kafka-0.11_2.11 和(Flink 版本为 1.9.3),但不知何故无法使用该方法。正如我所说,我不想使用已弃用的方法。
    • 啊,我发现我可以构建这个文件,但 IntelliJ 仍然显示不同的方法......
    • @DIOHABARA,您是否在 IntelliJ 中重新导入了更改(依赖项)? flink-connector-kafka-0.11_2.11 具有 FlinkKafkaProducer011 和所需的构造函数:java public FlinkKafkaProducer011(String brokerList, String topicId, SerializationSchema&lt;IN&gt; serializationSchema) { this( topicId, new KeyedSerializationSchemaWrapper&lt;&gt;(serializationSchema), getPropertiesFromBrokerList(brokerList), Optional.of(new FlinkFixedPartitioner&lt;IN&gt;())); }
    • 谢谢!我成功了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多