4.1、Flink任务怎样读取集合中的数据

1、API说明

非并行数据源:

def fromElements[T: TypeInformation](data: T*): DataStream[T]

def fromCollection[T: TypeInformation](data: Seq[T]): DataStream[T]

def fromCollection[T: TypeInformation] (data: Iterator[T]): DataStream[T]

并行数据源:

def fromParallelCollection[T: TypeInformation] (data: SplittableIterator[T])

使用场景:

常用来调试代码使用


2、这是一个完整的入门案例

开发语言:Java1.8

Flink版本:flink1.17.0

java 复制代码
package com.baidu.datastream.source;

import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.NumberSequenceIterator;

import java.util.Arrays;
import java.util.List;

// --------------------------------------------------------------------------------------------
//  TODO 从集合中读取数据
// --------------------------------------------------------------------------------------------

/*
 *  TODO 通过`读取Java集合中数据`来创建 DataStreamSource
 *
 *  方法1:fromCollection
 *        Collection、Iterator -> DataStreamSource
 *  方法2:fromElements
 *        OUT... data -> DataStreamSource
 *  方法3:fromParallelCollection
 *        SplittableIterator -> DataStreamSource
 *  重要提示:
 *       fromCollection、fromElements 创建的是非并行source算子(并行度只能为1)
 *       fromParallelCollection 创建的是并行算子(并行度>=1)
 * */

public class ReadCollection {
    public static void main(String[] args) throws Exception {
        fromCollection();
        //fromElements();
        //fromParallelCollection();
    }

    public static void fromCollection() throws Exception {
        // 1.获取执行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(3);

        // 2.读取Java集合数据
        List<String> list = Arrays.asList("刘备", "张飞", "关羽", "赵云", "马超", "黄忠");
        env.fromCollection(list).print();

        // 3.触发程序执行
        env.execute();
    }

    public static void fromElements() throws Exception {
        // 1.获取执行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(3);

        // 2.读取给定的对象序列
        env.fromElements("刘备", "张飞", "关羽", "赵云", "马超", "黄忠").print();

        // 3.触发程序执行
        env.execute();
    }

    public static void fromParallelCollection() throws Exception {
        // 1.获取执行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(3);

        // 2.读取给定的对象序列
        NumberSequenceIterator numberSequenceIterator = new NumberSequenceIterator(1, 10);

        env.fromParallelCollection(numberSequenceIterator, Long.class).print();
        /*
         * 注意: fromParallelCollection生成的source为并行算子
         *       集合中的数据会被平均分配到并行子任务中去
         * */

        // 3.触发程序执行
        env.execute();
    }
}
相关推荐
LgZhu(Yanker)4 小时前
OPC UA, CAN, PROFINET, SOCKET, MODBUS, HTTP, S7七种物联网常用协议解释
大数据·网络·物联网·网络协议·5g·http·信息与通信
SickeyLee7 小时前
教育科技内容平台的破局之路:从组织困境到 UGC 生态的构建
大数据
G皮T7 小时前
【Elasticsearch】Elasticsearch 快照恢复 API 参数详解
大数据·elasticsearch·搜索引擎·全文检索·kibana·快照·快照恢复
码字的字节8 小时前
Hadoop小文件合并技术深度解析:HAR文件归档、存储代价与索引结构
大数据·hadoop·分布式·har·小文件合并
isfox9 小时前
副本数不足就拒写?HDFS 安全模式的 “保守” 设计是否合理?
大数据
数新网络10 小时前
Column-Stores vs. Row-Stores: How Different Are They Really?
大数据
阿里云大数据AI技术11 小时前
【新模型速递】PAI-Model Gallery云上一键部署Kimi K2模型
大数据·人工智能·数据分析
武子康14 小时前
大数据-47 Redis 内存控制、Key 过期与数据淘汰策略详解
大数据·redis·后端
阿里云大数据AI技术15 小时前
【跨国数仓迁移最佳实践2】MaxCompute SQL执行引擎对复杂类型处理全面重构,保障客户从BigQuery平滑迁移
大数据·人工智能·数据分析
小新学习屋16 小时前
网易大数据用户画像实践-笔记
大数据·人工智能·深度学习·搜索引擎·推荐算法·广告·用户画像