Apache Flink DataStream API之程序结构分析&DataSource(章节二)

本文深入解析Apache Flink DataStream API,重点讨论程序结构、数据源如Socket-based、Collection-based的使用,以及如何通过addSource进行流处理。Flink的DataStream API用于处理无限数据集,提供预定义的流源,包括读取文本文件、监控文件系统变化等,同时也支持自定义数据源。文章还提到了Flink程序的执行环境设置、数据转换指定及程序执行流程。
摘要由CSDN通过智能技术生成

作者:jiangzz 电话:15652034180 微信:jiangzz_wx 微信公众账号:jiangzz_wy

ApacheFlink® - 是针对于数据流的状态计算,Flink具有特殊类DataSet和DataStream来表示程序中的数据。您可以将它们视为可以包含重复项的不可变数据集合。在DataSet的情况下,数据是有限的,而对于DataStream,元素的数量可以是无限的。

这些集合在某些关键方面与常规Java集合不同。首先,它们是不可变的,这意味着一旦创建它们就无法添加或删除元素。你也不能简单地检查里面的元素。 最初通过在Flink程序中添加Source来创建集合,并通过使用诸如map,filter等API方法对它们进行转换来从这些集合中派生新集合。

结构分析

Flink程序看起来像是转换数据集合的常规程序。每个程序包含相同的基本部分:

  • 获得执行环境,
  • 加载/创建初始数据,
  • 指定此数据的转换,
  • 指定放置计算结果的位置,
  • 触发程序执行

获取执行环境

Flink提供了三种运行Flink计算的方式:

  • 远程jar包部署方式
var streamEnv = StreamExecutionEnvironment.getExecutionEnvironment()
  • 本地执行
var streamEnv = StreamExecutionEnvironment.createLocalEnvironment()
  • 跨平台提交
var streamEnv = StreamExecutionEnvironment.createRemoteEnvironment("CentOS",8081,"jarFiles")

用户可以更具需求自行抉择选择哪种方式测试或者运行代码。

加载/创建初始数据

创建需要加载的数据源,一般该数据源来源于消息队列或者其他第三方系统,为了测试方便这里我们先使用socketTextStream实现数据源的加载。

var source = streamEnv.socketTextStream("CentOS", 9999)

指定此数据的转换

通过指定数据转换规则对DataStream上应用转换以创建新的派生DataStream。

source.flatMap(_.split("\\W+"))
      .map((_,1))
      .keyBy(0)
      .sum(1)

将计算结果存储到 文件中

writeAsCsv("D:/flinks/results")

触发程序执行

streamEnv.execute("wordcounts")

将以上程序放置在一起

import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
import org.apache.flink.api.scala._

//1.创建流处理执行环境 - 本地环境
var streamEnv <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值