Flink 数据源 DataSource是这个样子的?

点击蓝色“Java极客技术”关注我哟

加个“星标”,天天早上 08:14,一起快乐成长

640?wx_fmt=jpeg

为何要使用 Flink

因为本篇文章中,有个 Kafka 数据源的 Demo,在一开始解答小伙伴有可能的困惑:

Question:既然监听 Kafka 消息,为何不建立一个简单的消息消费者,使用简单的代码就能进行消息的消费?

Answer:在普通的消费者逻辑中,只能做到对传送过来的一条消息进行单条处理。而在 Flink 这个优秀的流计算框架中,能够使用窗口进行多样化处理。提供了窗口处理函数,可以对一段时间(例如 5s 内)或者一批(计数大小,例如 5 个一批)的数据进行计数或者 reduce 整合处理

还有 Flink 拥有状态管理,能够保存 checkpoint,如果程序出现错误,也能够之前的检查点恢复,继续程序的处理,于是拥有这些好处的优秀框架,希望小伙伴也加入进来,一起学习~

1、前言

接下来的几篇文章,都会围绕着下面这张图,整体上来说,就是 DataStreamAPI 编程的练习:

640?wx_fmt=jpeg

分别是 SourceTransformation 和 Sink 进行逐一学习。


2、DataSource 介绍

直译:数据来源

计算引擎,不管是批出来还是流处理,最重要的是数据来源,根据源源不断的数据进行处理,加工成更有价值的数据。

Flink 官方包中提供了如下基于集合、文件、套接字等 API然后第三方例如 KafkaRabbitMq 等也提供了方便的集成库

由于我们测试时,使用的是 StreamExecutionEnvironment.getExecutionEnvironment() 来获取流执行环境类进行操作,所以我们来看下这个类的返回类型是 DataStreamSource 的方法:

640?wx_fmt=png

3、集合

集合数据源主要有三种:collectionelement 和 generateSequence

  • fromCollection(Collection):接受的参数对象必须是同一类型的集合
  • fromCollection(Iterator<OUT>data, Class<OUT> type):第一个参数是迭代器,第二个参数是指定返回的类型
  • fromElements(Class<OUT> type, OUT... data):第一个参数是指定返回的类型,后面的是不定数量入参,可以输入多个  OUT 类型的对象
  • fromParallelCollection(SplittableIterator<OUT> iterator, TypeInformation<OUT> typeInfo, String operatorName)从一个可分离的迭代器中创建并行数据源。这个方法是  parallel 并行数据源的底层调用方法, typeInfo 是具体的类型信息,最后一个参数就是操作名字。这个并行数据源并没有测试过,等到之后回来补坑吧。
  • generateSequence(long, long):创建一个包含数字序列的新数据流。例如传进去是 1l 和 10l,那么数据源就是 [1-10]

测试代码如下:

DataSourceFromCollection.java

private static DataStreamSource<Student> collection1(StreamExecutionEnvironment env) {	
    List<Student> studentList = Lists.newArrayList(	
            new Student(1, "name1", 23, "address1"),	
            new Student(2, "name2", 23, "address2"),	
            new Student(3, "name3", 23, "address3")	
    );	
    return env.fromCollection(studentList);	
}	

	

	
private static DataStreamSource<Long> collection2(StreamExecutionEnvironment env) {	
    return env.generateSequence(1, 20);	
}

4、文件 File

从官方例子中,罗列了以下三个读取文件的方法,第一个返回的文本类型的数据源,第二个数据源是只读取一次文件,第三个方法参数比较多,文档中关于 watchType 观察类型介绍比较多,这里翻译自文档 Flink DataStream API

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值