intellij idea下测试flink 连接kafka

先新建一个quickstart的maven项目

把官方给的SocketWindowWordCount程序 拷过来,稍微修改一下,只用来测试数据从kafka读入和写出的功能

package kafkaTest3;

import java.util.Properties;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.functions.ReduceFunction;
import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.DataStreamSink;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.windowing.time.Time;
import org.apache.flink.util.Collector;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer011;
import org.apache.flink.api.common.serialization.SimpleStringSchema;
import org.apache.flink.api.common.functions.MapFunction;

@SuppressWarnings("serial")
public class SocketWindowWordCount {
    public static void main(String[] args) throws Exception {

        // the port to connect to
        final int port = 9000;
        // get the execution environment
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // get input data by connecting to the socket
        DataStream text = env.socketTextStream("172.24.31.133", port, "\n");

        // print the results with a single thread, rather than in parallel
        Properties props = new Properties();
        //指定代理服务器的地址
        props.put("bootstrap.servers", "172.24.31.133:9092");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        FlinkKafkaProducer011 myproducer = new FlinkKafkaProducer011("172.24.31.133:9092","test2", new SimpleStringSchema());
        text.addSink(myproducer);
//        text.print();
        System.out.println("1111");

        env.execute("Socket Window WordCount");
        System.out.println("2222");
    }


}

添加pom.xml下的依赖:


      org.apache.kafka
      kafka-clients
      2.3.1
    

    
      org.apache.flink
      flink-java
      1.9.1
    
    
      org.apache.flink
      flink-streaming-java_2.11
      1.9.1
      provided
    
    
      org.apache.flink
      flink-connector-kafka-0.11_2.11
      1.9.1
    

将下载的flink的jar包加入到项目,这里需要确定依赖里写的flink版本号与下载的flink版本号一致,我使用的是1.9.1

在服务端打开kafka并新建相应的topic,这里数据读入是从服务的9000端口读入。

使用nc -l 9000 命令新建一个服务端,可以进行数据推送。

先在服务端用nc -l 9000 启动服务端tcp,在运行程序。

在服务端写入数据,发现kafka的topic 能接收到程序sink出来的数据,程序运行成功。

把程序打包成jar包,用flink 运行:

intellij idea下测试flink 连接kafka_第1张图片

在Project Structure 中选择Artifacts,添加。

intellij idea下测试flink 连接kafka_第2张图片

这里需要把上面这个默认的路径换掉。

选择Build->Build Artifacts   

生成相应的jar包。

windows 下进到flink 的bin目录下运行 start-cluster.bat 启动flink

浏览器输入localhost:8081,可以看到启动成功:

intellij idea下测试flink 连接kafka_第3张图片

 

 

进到flink 的bin 目录下输入flink run XXX(XXX为刚才生成的jar包路径)

需要等一会,控制台才出现running job:

intellij idea下测试flink 连接kafka_第4张图片

后面可以通过控制台进行监控。

你可能感兴趣的:(大数据)