flink api-datastream api-source算子

Flink源算子API是构建数据处理程序的输入端组件,主要分为预定义源和自定义源两类实现方式。以下是核心分类与使用方式:

预定义数据源

‌1.集合数据源

通过fromCollection()方法从内存集合创建DataStream,支持List、Iterator等集合类型,需指定元素类型信息

java 复制代码
// 从List创建
DataStream<String> stream = env.fromCollection(Arrays.asList("a", "b"));
// 从Iterator创建(需指定类型)
DataStream<Long> numbers = env.fromCollection(
    new NumberSequenceIterator(1L, 10L), 
    BasicTypeInfo.LONG_TYPE_INFO
);

2.文件数据源

支持读取文本文件(readTextFile)或按行解析文件(readFile),可配置文件监控模式

java 复制代码
DataStream<String> logStream = env.readTextFile("hdfs://path/to/logs");

3.Socket数据源

通过socketTextStream从网络套接字读取实时流数据,需指定主机和端口

java 复制代码
DataStream<String> socketStream = env.socketTextStream("localhost", 9999);

4.Kafka数据源

官方推荐使用KafkaSource构建器,需配置bootstrap服务器和反序列化器

java 复制代码
KafkaSource<String> source = KafkaSource.<String>builder()
    .setBootstrapServers("kafka:9092")
    .setTopics("input-topic")
    .setDeserializer(new SimpleStringSchema())
    .build();
DataStream<String> kafkaStream = env.fromSource(source...);

自定义数据源

需实现SourceFunction接口(无并行)或ParallelSourceFunction接口(支持并行),重写run()方法定义数据生成逻辑,通过SourceContext.collect()发射数据

java 复制代码
public class CustomSource implements SourceFunction<Event> {
    @Override
    public void run(SourceContext<Event> ctx) {
        while (isRunning) {
            ctx.collect(new Event(...)); // 发射数据
            Thread.sleep(1000);
        }
    }
    @Override
    public void cancel() { isRunning = false; }
}
// 使用方式
DataStream<Event> customStream = env.addSource(new CustomSource());

API选择建议

**‌测试场景‌:**优先使用fromCollection或socketTextStream快速验证逻辑

**‌生产环境‌:**推荐fromSource配合Kafka/Pulsar等连接器,内置更完善的容错机制

**‌自定义扩展‌:**通过实现Source接口(新版本)替代旧版SourceFunction,支持更细粒度的水位线生成

相关推荐
初恋叫萱萱17 小时前
模型瘦身实战:用 `cann-model-compression-toolkit` 实现高效 INT8 量化
大数据
互联网科技看点18 小时前
孕期科学补铁,保障母婴健康-仁合益康蛋白琥珀酸铁口服溶液成为产妇优选方案
大数据
Dxy123931021618 小时前
深度解析 Elasticsearch:从倒排索引到 DSL 查询的实战突围
大数据·elasticsearch·搜索引擎
Hello.Reader18 小时前
Flink 文件系统通用配置默认文件系统与连接数限制实战
vue.js·flink·npm
YongCheng_Liang18 小时前
零基础学大数据:大数据基础与前置技术夯实
大数据·big data
AC赳赳老秦18 小时前
2026国产算力新周期:DeepSeek实战适配英伟达H200,引领大模型训练效率跃升
大数据·前端·人工智能·算法·tidb·memcache·deepseek
鹏说大数据18 小时前
Spark 和 Hive 的关系与区别
大数据·hive·spark
B站计算机毕业设计超人18 小时前
计算机毕业设计Hadoop+Spark+Hive招聘推荐系统 招聘大数据分析 大数据毕业设计(源码+文档+PPT+ 讲解)
大数据·hive·hadoop·python·spark·毕业设计·课程设计
B站计算机毕业设计超人18 小时前
计算机毕业设计hadoop+spark+hive交通拥堵预测 交通流量预测 智慧城市交通大数据 交通客流量分析(源码+LW文档+PPT+讲解视频)
大数据·hive·hadoop·python·spark·毕业设计·课程设计
数据架构师的AI之路18 小时前
深入了解大数据领域Hive的HQL语言特性
大数据·hive·hadoop·ai