不知不觉,这已经是快速入门Flink系列的第7篇博客了。早在第4篇博客中,博主就已经为大家介绍了在批处理中,数据输入Data Sources 与数据输出Data Sinks的各种分类(传送门:Flink批处理的DataSources和DataSinks)。但是大家是否还记得Flink的概念?Flink是 分布式、 高性能、 随时可用以及准确的为流处理应用程序打造的开源流处理框架。所以光介绍了批处理哪里行呢!本篇博客,我们就来学习Flink流处理的DataSources和DataSinks~

文章目录

  • 1、DataStream API开发
    • 1.1 入门案例
      • 1.1.1 Flink流处理程序的一般流程
      • 1.1.2 示例
      • 1.1.3 步骤
      • 1.1.4 参考代码
    • 1.2 输入数据集 Data Sources
      • 1.2.1 Flink 在流处理上常见的 Source
      • 1.2.2 基于集合的 source
      • 1.2.3 基于文件的 source
      • 1.2.4 基于网络套接字的 source
      • 1.2.5 自定义的 source
        • 1.2.5.1 SourceFunction:创建非并行数据源
        • 1.2.5.2 ParallelSourceFunction:创建并行数据源
        • 1.2.5.3 RichParallelSourceFunction:创建并行数据源
      • 1.2.6 基于 kafka 的 source
      • 1.2.7 基于 mysql 的 source 操作
    • 1.3 数据输出 Data Sinks
      • 1.3.1 sink 到 kafka
      • 1.3.2 sink 到 mysql
    • 结语

1、DataStream API开发

1.1 入门案例

1.1.1 Flink流处理程序的一般流程

1) 获取 Flink 流处理执行环境

2) 构建 source

3) 数据处理

4) 构建 sink

1.1.2 示例

编写 Flink 程序,用来统计单词的数量。

1.1.3 步骤

1) 获取 Flink 批处理运行环境

2) 构建一个 socket 源

3) 使用 flink 操作进行单词统计

4) 打印

说明:如果 linux 上没有安装 nc 服务 ,使用 yum 安装

yum install -y nc

1.1.4 参考代码

import org.apache.flink.api.java.tuple.Tuple
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.api.windowing.time.Time
import org.apache.flink.streaming.api.windowing.windows.TimeWindow/** @Author: Alice菌* @Date: 2020/7/9 08:40* @Description: */
// 入门案例,单词统计
object StreamWordCount {def main(args: Array[String]): Unit = {// 1、 创建流处理的执行环境val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment// 2、 构建数据源,使用的socketval socketDataStream: DataStream[String] = env.socketTextStream("node01",9999, 0)// 3、 数据的处理val wordDataStream: DataStream[(String, Int)] = socketDataStream.flatMap(_.split(" ")).map(_ -> 1)//4. 使用keyBy 进行分流(分组)// 在批处理中针对于dataset, 如果分组需要使用groupby// 在流处理中针对于datastream, 如果分组(分流)使用keyByval groupedDataStream: KeyedStream[(String, Int), Tuple] = wordDataStream.keyBy(0)//5. 使用timeWinodw 指定窗口的长度(每5秒计算一次)// spark-》reduceBykeyAndWindowval windowDataStream: WindowedStream[(String,Int),Tuple,TimeWindow]= groupedDataStream.timeWindow(Time.seconds(5))//6. 使用sum执行累加val sumDataStream: DataStream[(String, Int)] = windowDataStream.sum(1)sumDataStream.print()env.execute("StreamWordCount")}
}

我们来测试下效果如何~

首先我们在linux上开启9999端口

nc -lk 9999

        然后我们启动我们的程序,发现也是毫无波澜。

接下来就是见证奇迹的时候了,当我以飞快的速度在命令行中敲下这些字母

        然后观察程序的控制台,发现打印出了每5秒内,所有的字符数的个数

        有朋友肯定会好奇,为什么scala一次显示为3次,后面只显示了1次

快速入门Flink (7) —— 小白都喜欢看的Flink流处理之DataSources和DataSinks相关推荐

  1. 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 3)

    小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第三讲 这是小白都能看懂的实战教程 手把手教你Python Web全栈开发 的 ...

  2. 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 1)

    小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第一讲 博主博客文章内容导航(实时更新) 更多优质文章推荐: 收藏!最详细的P ...

  3. yolov5-4.0环境搭建,零基础小白都能看得懂的教程。YOLOv5搭建的最快搭建方式,踩坑经历详谈)yolov5/yolov4/yolov3/yolov3通>>>>>>>>>>>>>>>>>第一章

    第一章:python最新YOLOv5-4.0环境搭建,零基础小白都能看得懂的教程.YOLOv5搭建的最快搭建方式,踩坑经历详谈 环境准备: yolov5-4.0环境搭建整体说明 2,anaconda的 ...

  4. 小白都能看得懂的教程 一本教你如何在前端实现markdown编辑器

    小白都能看得懂的教程 一本教你如何在前端实现markdown编辑器   大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站.华为开发者论坛等平台分享一些技 ...

  5. 开源纯C日志函数库iLOG3快速入门(八、如果你喜欢简单日志函数甚于日志函数库)...

    2019独角兽企业重金招聘Python工程师标准>>> 开源纯C日志函数库iLOG3快速入门(八.如果你喜欢简单日志函数甚于日志函数库) 很多网友来信坚持表达了在项目中应使用简单日志 ...

  6. 随机森林的特征 是放回抽样么_机器学习超详细实践攻略(10):随机森林算法详解及小白都能看懂的调参指南...

    一.什么是随机森林 前面我们已经介绍了决策树的基本原理和使用.但是决策树有一个很大的缺陷:因为决策树会非常细致地划分样本,如果决策树分得太多细致,会导致其在训练集上出现过拟合,而如果决策树粗略地划分样 ...

  7. [免费专栏] Android安全之Android Xposed插件开发,小白都能看得懂的教程

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

  8. c语言程序和plc程序的区别,一文告诉你PLC与计算机的本质区别在哪里!小白都能看懂!...

    原标题:一文告诉你PLC与计算机的本质区别在哪里!小白都能看懂! 你真的了解PLC吗?你知道PLC与计算机的本质区别吗?我来简单解释一下吧. 1.PLC可以工作在极其恶劣的电磁环境中 如果我们把计算机 ...

  9. 红色买绿色出 简单易操作的买卖点公式 散户小白都能看懂

    好久没来csdn了,在最初,CSDN是用来记录我做前端写的笔记,后面在工作期间,接触了产品,就转岗了,慢慢的,csdn就很少写了,但是我觉得这里可以作为我记录心得的一个地方,还是挺好的. 因为产品规划 ...

  10. yolov5使用2080ti显卡训练是一种什么样的体验我通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程。>>>>>>>>>第二章番外篇

    第二章番外篇:yolov5通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程.YOLOv5搭建的最快搭建方式,踩坑经历详谈 前期准备: 2 ...

最新文章

  1. 功能点分析:商品类目表
  2. Flask之DButils
  3. 学习笔记Hive(七)—— 自定义函数
  4. pdflush内核线程池及其中隐含的竞争
  5. 使用Eclipse在Amazon Ec2中部署Java Web应用程序的完整指南
  6. 引用:初探Sql Server 执行计划及Sql查询优化
  7. codeforces 701 E. Connecting Universities(树+ 边的贡献)
  8. goland环境配置_Goland辅助工具goimports和gomodules
  9. FPGA跨时钟域处理方法FIFO
  10. linux安装图像界面
  11. powershell自动化操作AD域、Exchange邮箱系列(6)——获取并监控内存、CPU占用率
  12. 记得收藏这12个爆款 Java 开源项目!【附源码】
  13. 三级联动(原生js)
  14. 百宝云网络验证对接+脚本更新功能(源码)
  15. 新年新气象,专注于重要的事
  16. linux 安全删除文件_如何在Linux上安全删除文件
  17. 小米的隔空充电技术或许是概念产品,需要跨越的技术难点太多
  18. 用脚本组装xgen 后期文件,缓存正确,毛发飞的可能分析
  19. StarUML for MAC 破解
  20. R9 7845HX参数 R97845HX核显怎么样 锐龙R97845HX相当于什么水平

热门文章

  1. TinyKv Project1 Standalone KV
  2. C语言基础:如何判断素数(质数)与合数
  3. iOS常用RGB颜色的色值一览表
  4. 几何光学学习笔记(35)- 7.6 CIE标准色度学系统
  5. BCH分叉影响深远 业内外热议不断
  6. 平面设计是什么?学会平面设计可以从事什么工作?
  7. python3 +ip2region 离线IP库地址文件实现毫秒级查询ip地址信息
  8. 微软默认 密钥管理服务器,加密和密钥管理概述 - Microsoft Service Assurance | Microsoft Docs...
  9. Unity VR开发教程 OpenXR+XR Interaction Toolkit 2.1.1 (一) 安装和配置
  10. MSP430编译MLX90614失败