Flink DataStream API (二)一些常规数据源

本文介绍了Apache Flink中如何从不同数据源读取数据,包括从集合、元素、文件和Socket进行读取。通过实例展示了如何创建Event类来表示用户访问事件,并提供了读取数据的代码示例。强调了这些方法通常在测试环境中使用,而非生产环境。
摘要由CSDN通过智能技术生成

准备工作

为了更好地理解,我们先构建一个实际应用场景。比如网站的访问操作,可以抽象成一个三元组(用户名,用户访问的 urrl,用户访问 url 的时间戳),所以在这里,我们可以创建一个类 Event,将用户行为包装成它的一个对象。Event 包含了以下一些字段,

字段名数据类型说明
userString用户名
urlString用户访问的 url
timestampLong用户访问 url 的时间戳

Event类源代码,我们定义的 Event,有这样几个特点:

  • 类是公有(public)的
  • 有一个无参的构造方法
  • 所有属性都是公有(public)的
  • 所有属性的类型都是可以序列化的

从集合中读取数据

ArrayList<Event> clicks = new ArrayList<>();
 clicks.add(new Event("Mary","./home",1000L));
 clicks.add(new Event("Bob","./cart",2000L));
 DataStream<Event> stream = env.fromCollection(clicks);

从元素中读取数据

DataStreamSource<Event> stream2 = env.fromElements(
 		new Event("Mary", "./home", 1000L),
	 	new Event("Bob", "./cart", 2000L)
);

不管是从集合中读取数据,还是从元素中读取数据,一般只用于测试,不会在生产环境中正式使用

从文件读取数据

DataStream<String> stream = env.readTextFile("input/clicks.csv");

说明:

  • 参数可以是目录,也可以是文件;
  • 路径可以是相对路径,也可以是绝对路径;
  • 相对路径是从系统属性 user.dir 获取路径: idea 下是 project 的根目录, standalone 模式下是集群节点根目录;

Socket读取数据

这个内容在前几天做 WordCount 中已经做过了,就不详细解析了,文本流适合测试数据,但不适用于生产环境中。

Socket流源代码

本章整体代码如下(不包括Socket读取数据):Flink的一些常规数据源代码,包含从集合中准备数据,元素中准备数据,以及文件中准备数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值