Flink专题-Source

本文详细介绍了如何在Flink中使用Collection、File和Kafka三种常见的数据源,并展示了从集合、文本文件到实时消息队列的接入方法。自定义数据源(UDF)的使用也进行了简单概述,适合Flink入门者学习数据流处理的基础配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flink Source

进入flink的数据源大致分为以下几类:

  1. 集合 Collection
  2. 文件 File
  3. Kafka
  4. UDF

一般都是使用前三个source源即可,如果想要使用其他数据源就可以自定义数据源即UDF。

Collection

public static void main(String[] args) throws Exception {
//指定运行环境
      StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
//设置全局并行度
      env.setParallelism(1);
//1.使用fromCollection函数
      DataStreamSource<Integer> inputStream = env.fromCollection(Arrays.asList(1, 2, 3, 4, 5));
//2.使用fromElements函数
      DataStreamSource<Integer> inputStream1 = env.fromElements(1, 2, 3, 4, 5);
//打印输出
      inputStream.print();
      inputStream1.print();
//执行任务
      env.execute();
  }

File

 public static void main(String[] args) throws Exception {
        //获取执行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        //设置全局并行度
        env.setParallelism(1);
        //读取数据
        String s = "hello.text";
        DataStream<String> inputDataStream = env.readTextFile(s);
        //打印数据
        inputDataStream.print("out");
        //执行任务
        env.execute("jobname");
    }

Kafka

public static void main(String[] args) throws Exception {
    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.setParallelism(1);
    
    //kafka连接参数配置
    Properties prop = new Properties();
    prop.put("bootstrap.servers","hadoop102:9092");//设置需要连接的主机
    prop.put("zookeeper.connect","hadoop102:2181");
    prop.put("group.id","first");
    prop.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
    prop.put("value.serializer","org.apache.kafka.common,serialization.StringSerializer");
    prop.put("auto.offset.rest","latest");
    //通过addSource获取一般数据源
    //注意这里使用了kafka与flink的连接器,如果没有在pom.xml文件中依赖中添加:
//<dependency>
//    <groupId>org.apache.flink</groupId>
//    <artifactId>flink-connector-kafka_${scala.binary.version}</artifactId>
//    <version>${flink.version}</version>
//</dependency>
    DataStreamSource<String> inputStream = 
   env.addSource(new FlinkKafkaConsumer<String>("first", new SimpleStringSchema(), prop));//注意获取的数据是String类型.
    
    inputStream.print();
    
    env.execute();
    }

UDF(自定义source源)

    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);
        //使用自定义source,需要实现一个SourceFunction,或者他的富函数RichSourceFunction
       DataStreamSource<String> inputStream= env.addSource(new MysourceFunciton());
        inputStream.print();
        env.execute();
    }
    public static class MysourceFunciton extends RichSourceFunction<String> {
        private Integer start;
        @Override
        public void open(Configuration parameters) throws Exception {
            start=1;
        }

        @Override
        public void run(SourceContext<String> ctx) throws Exception {
            while(start!=0){
                ctx.collect("hello wolrd");
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看不见的罗辑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值