• Flink Sink Kafka


    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/15149998.html

    Kafka Setup

    wget https://downloads.apache.org/kafka/2.8.0/kafka_2.12-2.8.0.tgz
    
    tar zxvf kafka_2.12-2.8.0.tgz -C ~/app
    
    cd ~/app/kafka_2.12-2.8.0
    
    # start the zookeeper service
    bin/zookeeper-server-start.sh config/zookeeper.properties
    
    # start the Kafka broker service
    bin/kafka-server-start.sh config/server.properties
    
    # create topic
    bin/kafka-topics.sh --create --topic flink_topic --bootstrap-server localhost:9092
    
    # describle message
    bin/kafka-topics.sh --describe --topic flink_topic --bootstrap-server localhost:9092
    
    # produce message
    bin/kafka-console-producer.sh --topic flink_topic --bootstrap-server localhost:9092
    
    # consumer message
    bin/kafka-console-consumer.sh --topic flink_topic --from-beginning --bootstrap-server localhost:9092

    Maven Dependency

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.fool</groupId>
        <artifactId>flink</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-java</artifactId>
                <version>1.12.5</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-streaming-java_2.12</artifactId>
                <version>1.12.5</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-clients_2.12</artifactId>
                <version>1.12.5</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-connector-kafka_2.12</artifactId>
                <version>1.12.5</version>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.20</version>
            </dependency>
    
        </dependencies>
    
    </project>

    SRC

    src/main/java/org/fool/flink/contract/Sensor.java

    package org.fool.flink.contract;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Sensor {
        private String id;
        private Long timestamp;
        private Double temperature;
    }

    src/main/java/org/fool/flink/sink/SinkKafkaTest.java

    package org.fool.flink.sink;
    
    import org.apache.flink.api.common.functions.MapFunction;
    import org.apache.flink.api.common.serialization.SimpleStringSchema;
    import org.apache.flink.streaming.api.datastream.DataStream;
    import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
    import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer;
    import org.fool.flink.contract.Sensor;
    
    import java.util.Objects;
    import java.util.Properties;
    
    public class SinkKafkaTest {
        public static void main(String[] args) throws Exception {
            StreamExecutionEnvironment environment = StreamExecutionEnvironment.getExecutionEnvironment();
            environment.setParallelism(1);
    
            Properties properties = new Properties();
            properties.setProperty("bootstrap.servers", "localhost:9092");
            properties.setProperty("group.id", "consumer-group");
            properties.setProperty("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
            properties.setProperty("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
            properties.setProperty("auto.offset.reset", "latest");
    
            String inputPath = Objects.requireNonNull(ClassLoader.getSystemClassLoader().getResource("sensor.txt")).getPath();
    
            DataStream<String> inputStream = environment.readTextFile(inputPath);
    
            DataStream<String> dataStream = inputStream.map(new MapFunction<String, String>() {
                @Override
                public String map(String value) throws Exception {
                    String[] fields = value.split(",");
                    return new Sensor(fields[0], new Long(fields[1]), new Double(fields[2])).toString();
                }
            });
    
            dataStream.addSink(new FlinkKafkaProducer<>("flink_topic", new SimpleStringSchema(), properties));
    
            environment.execute();
        }
    }

    src/main/resources/sensor.txt

    1,1628754086,35.8
    2,1628754096,36.8
    3,1628754106,37.8
    4,1628754116,38.8
    1,1628754186,36.6
    2,1628754296,36.6
    3,1628754306,37.6
    4,1628754416,38.6
    1,1628754986,25.8
    1,1628754086,39.6
    2,1628754996,26.8
    3,1628754906,27.8
    4,1628754916,28.8

    Run

    Console Output

    Kafka Consumer


    欢迎点赞关注和收藏

    强者自救 圣者渡人
  • 相关阅读:
    Transform XML using XSLT
    HyperV Remote Management Configuration utility
    UI testing via Reflection in .NET
    Auto Test: Test Case Structure
    UI Testing via windows API
    风讯CMS常见问题锦集
    深入了解ASP.NET运行内幕 .txt
    公布一个简单的日志记录方法 【转】要研究
    服务器asp.net权限设置问题及解决方法时间:
    C#如何去掉字符串中所有空格
  • 原文地址:https://www.cnblogs.com/agilestyle/p/15149998.html
Copyright © 2020-2023  润新知