DataStream Data Sources

本文主要介绍了Apache Flink中DataStream数据源的使用,包括通过socket方式创建数据源以及如何自定义并行数据源。详细阐述了这两种方法的具体实现和应用场景。

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

public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        socketFunction(env);
        //nonParallelSourceFunction(env);
//        parallelSourceFunction(env);
//        richParallelSourceFunction(env);
        env.execute("JavaDataStreamSourceApp");
    }

1:socket方式:

public static void socketFunction(StreamExecutionEnvironment env) {
    DataStreamSource<String> data =  env.socketTextStream("localhost", 18082);
    data.print().setParallelism(1);
}

2:自定义数据源,并行数据源

  by implementing the  SourceFunction  for non-parallel sources,
 or 
by implementing the  ParallelSourceFunction  interface 
or 
extending the  RichParallelSourceFunction  for parallel sources.
public static void richParallelSourceFunction(StreamExecutionEnvironment env) {
    DataStreamSource<Long> data = env.addSource(new JavaCustomRichParallelSourceFunction()).setParallelism(2);
    data.print().setParallelism(1);
}
public static void parallelSourceFunction(StreamExecutionEnvironment env) {
    DataStreamSource<Long> data = env.addSource(new JavaCustomParallelSourceFunction()).setParallelism(2);
    data.print().setParallelism(2);
}
public static void nonParallelSourceFunction(StreamExecutionEnvironment env) {
    DataStreamSource<Long> data = env.addSource(new JavaCustomNonParallelSourceFunction());
            //.setParallelism(2);
    data.print().setParallelism(2);
}
JavaCustomNonParallelSourceFunction
package com.imooc.flink.java.course05;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
/**
* Author: Michael PK
*/
public class JavaCustomNonParallelSourceFunction implements SourceFunction<Long> {
    boolean isRunning = true;
    long count = 1;
    public void run(SourceContext<Long> ctx) throws Exception {
        while (true) {
            ctx.collect(count);
            count += 1;
            Thread.sleep(1000);
        }
    }
    public void cancel() {
        isRunning = false;
    }
}
JavaCustomParallelSourceFunction
package com.imooc.flink.java.course05;
import org.apache.flink.streaming.api.functions.source.ParallelSourceFunction;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
/**
* Author: Michael PK
*/
public class JavaCustomParallelSourceFunction implements ParallelSourceFunction<Long> {
    boolean isRunning = true;
    long count = 1;
    public void run(SourceContext<Long> ctx) throws Exception {
        while (true) {
            ctx.collect(count);
            count += 1;
            Thread.sleep(1000);
        }
    }
    public void cancel() {
        isRunning = false;
    }
}
JavaCustomRichParallelSourceFunction
package com.imooc.flink.java.course05;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.functions.source.RichParallelSourceFunction;
/**
* Author: Michael PK
*/
public class JavaCustomRichParallelSourceFunction extends RichParallelSourceFunction<Long> {
    boolean isRunning = true;
    long count = 1;
    public void run(SourceContext<Long> ctx) throws Exception {
        while (true) {
            ctx.collect(count);
            count += 1;
            Thread.sleep(1000);
        }
    }
    @Override
    public void open(Configuration parameters) throws Exception {
        super.open(parameters);
    }
    @Override
    public void close() throws Exception {
        super.close();
    }
    public void cancel() {
        isRunning = false;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值