简体   繁体   English

flink + Kafka:getHostnamePort

[英]flink+Kafka: getHostnamePort

I want to read a kafka topic from flink 我想从flink读一个kafka主题

package Toletum.pruebas;

    import org.apache.flink.api.common.functions.MapFunction;
    import org.apache.flink.api.java.utils.ParameterTool;
    import org.apache.flink.streaming.api.datastream.DataStream;
    import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
    import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer082;
    import org.apache.flink.streaming.util.serialization.SimpleStringSchema;

    public class LeeKafka {
        public static void main(String[] args) throws Exception {
            final ParameterTool parameterTool = ParameterTool.fromArgs(args);

            // create execution environment
            StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

            FlinkKafkaConsumer082 kafkaSrc = new FlinkKafkaConsumer082("test02", 
          new SimpleStringSchema(), 
          parameterTool.getProperties());

            DataStream messageStream = env.addSource(kafkaSrc);

            messageStream.rebalance().map(new MapFunction() {
                private static final long serialVersionUID = -6867736771747690202L;

                public String map(String value) throws Exception {
                    return "Kafka and Flink says: " + value;
                }
            }).print();

            env.execute("LeeKafka");
        }

    }

this code works successfully: 此代码成功运行:

java -cp Package.jar Toletum.pruebas.LeeKafka --topic test02 --bootstrap.servers kafka:9092 --zookeeper.connect zookeeper:2181 --group.id myGroup

But, when I try use from flink: 但是,当我尝试使用flink时:

flink run -c Toletum.pruebas.LeeKafka pruebas-0.0.1-SNAPSHOT-jar-with-dependencies.jar --topic test02 --bootstrap.servers kafka:9092 --zookeeper.connect zookeeper:2181 --group.id myGroup

I get a error: 我收到一个错误:

java.lang.NoSuchMethodError: org.apache.flink.util.NetUtils.getHostnamePort(Ljava/lang/String;)Ljava/net/URL;
        at org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer.getPartitionsForTopic(FlinkKafkaConsumer.java:592)
        at org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer.(FlinkKafkaConsumer.java:280)
        at org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer082.(FlinkKafkaConsumer082.java:49)
        at Toletum.pruebas.LeeKafka.main(LeeKafka.java:22)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:497)
        at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:395)
        at org.apache.flink.client.program.Client.runBlocking(Client.java:252)
        at org.apache.flink.client.CliFrontend.executeProgramBlocking(CliFrontend.java:676)
        at org.apache.flink.client.CliFrontend.run(CliFrontend.java:326)
        at org.apache.flink.client.CliFrontend.parseParameters(CliFrontend.java:978)
        at org.apache.flink.client.CliFrontend.main(CliFrontend.java:1028)

Old version lib..... 老版本的lib .....

Correct pom.xml: 正确的pom.xml:



            &ltdependency>
                    &ltgroupId&gtorg.apache.flink</groupId>
                    &ltartifactId&gtflink-connector-kafka</artifactId>
                    &ltversion&gt0.10.1</version>
            </dependency>

This problem is due to using the old version of FLink Connector library. 此问题是由于使用旧版本的FLink Connector库。

You can check the latest available library and download the latest Maven Dependency. 您可以查看最新的库并下载最新的Maven依赖项。

The Kafka version you are using should also be considered. 您还应考虑使用的Kafka版本。

Try using latest Maven dependency from Flink Documentation for Kafka Connector 尝试使用Flink Documentation for Kafka Connector的最新Maven依赖项

The latest maven dependency is 最新的maven依赖是

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-connector-kafka-0.8_2.10</artifactId>
  <version>1.3.2</version>
</dependency>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM