FLINK Producer数据写入到kafka 方法一

package kafkaproducer;


import com.alibaba.fastjson.JSON;
import org.apache.flink.api.common.serialization.SimpleStringSchema;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer011;
import org.apache.kafka.clients.producer.ProducerRecord;

import java.awt.*;
import java.text.DecimalFormat;
import java.util.Properties;
import java.util.Random;


public class Producer {
    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        //读取文件的方式写入kafka
//        DataStreamSource<String> lines = env.readTextFile("file:///d:/test.txt");

        DataStreamSource<String> lines = env.addSource(new SourceFunction<String>() {
            private static final long serialVersionUID = 1L;
            private volatile boolean isRunning = true;

            int count = 1;
            DecimalFormat userDecimal = new DecimalFormat("000");
            DecimalFormat typeDecimal = new DecimalFormat("0");

            String[] typeList = {"pv", "pu", "cart"};
            String[] cityList = {"北京市", "天津市", "上海市", "深圳市", "重庆市"};

            @Override
            public void run(SourceContext<String> out) throws Exception {
//                无限循环
//                while (isRunning){
                //这里修改需要的调数,方便进行数据统计
                while (count <= 100) {
                    int r_user = (int) (Math.round(Math.random() * 9 + 1));
                    int r_activity = (int) (Math.round(Math.random() * 4 + 1));
                    int p_type = (int) (Math.random() * typeList.length);
                    int t_city = (int) (Math.random() * cityList.length);

                    String user = "U" + userDecimal.format(r_user);
                    String activity = "A" + typeDecimal.format(r_activity);
                    long timeStramp = System.currentTimeMillis();
                    int pageview = (int) (Math.round(Math.random() * 4 + 1));
                    String typeP = typeList[p_type];
                    String city = cityList[t_city];
                    out.collect(user + " " + activity + " " + timeStramp + " " + pageview + " " + typeP + " " + city);
                    count++;
                }
            }

            @Override
            public void cancel() {
                isRunning = false;
            }
        });

        String groupID = "test";
        Properties prop = new Properties();
        prop.setProperty("bootstrap.servers", "master:9092,slave1:9092,slave2:9092");

        lines.addSink(new FlinkKafkaProducer<>(
                groupID,
                new SimpleStringSchema(),
                prop
        ));

        env.execute("Producer");
    }
}

闲着没事自己弄些数据玩,可以根据需求修改数据条数

posted @ 2022-05-29 08:30  田领群  阅读(292)  评论(0编辑  收藏  举报