转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/95459606
本文出自【我是干勾鱼的博客】

Ingredients:

  • Java:Java SE Development Kit 8u162(Oracle Java Archive),Linux下安装JDK并修改环境变量

  • Flink:flink-1.7.2-bin-scala_2.12.tgz(flink-1.7.2-bin-scala_2.12.tgz(mirror.bit.edu.cn/apache),Downloads,All Flink releases),Apache Flink® - Stateful Computations over Data Streams,Local Setup Tutorial,Building real-time dashboard applications with Apache Flink, Elasticsearch, and Kibana,Examples

1 当Spark遇见Flink。。。

Spark已经很火了!

有多火呢?Spark在Apache名人堂匾额上书Lightning-fast unified analytics engine,自称Lighting,还fast,口气不小。两三年前,大家谈到大数据,谈到未来的数据计算,首先想到的就是Spark,它是公认的明星产品,是计算领域的领军人物和颜值担当,提起计算的未来,基本是和Spark划等号的。

可是现在说未来,我们要犹豫了。Spark是将一切看成批,基于批计算来模拟流式计算;而Flink是将一切看成流,基于流式计算来模拟批计算,顺畅的逻辑就给人久违的赞同。

还有它更细粒度的封装,它的state、time、window,它的“Exactly-once”,概念都如此贴切,像是站在时间的远处等了我们好久。

就好比科比在最鼎盛的时代遇到詹姆斯:这个年轻人自称你的粉丝,略带稚嫩的说:“我上小学时就崇拜科比,高中毕业想到他没继续读大学就进入职业联赛,我想我也可以。。。”

当Spark遇见Flink,当科比遇见詹姆斯。。。一切都来得那么突然,仿佛一低头看到了未来。虽然你突破、投篮、罚球、三分都驾轻就熟,虽然你拿过5个总冠军,单场得过81分的高分,职业生涯早已技压群雄,惊世骇俗。。。眼前年轻人自称你的粉丝,却是未来全世界的明星。总有那么一刻,你矗立人生巅峰眺望远方,看到后出茅庐的新人在你面前纵身一跃,还是会有一种期盼已久的惊讶!这种惊讶,就像风清扬看到令狐冲一天完成自己三个月才学会招数时的大奇,又像曹操挥鞭江畔脱口而出生子当如孙仲谋时的赞叹,是对拳怕少壮的感慨,也是对长江后浪推前浪的敬畏!

2 编程步骤剖析

之前在:

凌波微步Flink——Flink安装及简单实用

凌波微步Flink——Flink API中的一些基础概念

中简单介绍了一下Flink,这里来说说Flink的编程剖析。

在Basic API Concepts中,Anatomy of a Flink Program介绍了在编程语言里如何使用Flink,给出了编程的步骤,并通过Java、Scala两种语言给出了示例。

具体步骤如下:

  • Obtain an execution environment,
  • Load/create the initial data,
  • Specify transformations on this data,
  • Specify where to put the results of your computations,
  • Trigger the program execution

也就是:

  • 获取执行环境
  • 加载/创建初始数据
  • 指明对数据的转换方式
  • 指明计算结果保存的位置
  • 启动程序的执行

这里用Java语言简单说一下。

值得一提的事,使用Java语言处理Flink,数据集(DataSet)处理的核心代码位于:

  • org.apache.flink.api.java

数据流(DataStreaming)处理的核心代码位于:

  • org.apache.flink.streaming.api

2.1 获取执行环境

要注意:

StreamExecutionEnvironment

是所有Flink程序的基础,获得它有几种方式:

  • getExecutionEnvironment()

  • createLocalEnvironment()

  • createRemoteEnvironment(String host, int port, String… jarFiles)

一般情况下使用:

  • shelgetExecutionEnvironment()

就够用了。比如:

final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

2.2 加载/创建初始数据

得到了执行环境(execution environment)之后,这个执行环境有很多种读取数据的方式,可以从CSV文件中一行一行的读取数据,也可以使用完全定制化的方式来读取数据。

比如,对数据以行序列的方式进行读取,可以:

final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();DataStream<String> text = env.readTextFile("file:///path/to/file");

你会得到一个数据流(DataStream),使用这个数据流也可以生成新的驱动数据流。

2.3 指明对数据的转换方式

可以使用DataStream中的转换方法进行数据转换,例如map转换:

DataStream<String> input = ...;DataStream<Integer> parsed = input.map(new MapFunction<String, Integer>() {@Overridepublic Integer map(String value) {return Integer.parseInt(value);}
});

以上内容其实就是调用原有DataStream对象(及input)的map方法,传入一个Java类:

MapFunction<String, Integer>

的匿名对象,并重写了它的构造函数。这样返回值会生成一个新的DataStream,里面数据中的String类型全被转换为Integer类型。

2.4 指明计算结果保存的位置

一旦得到了满足最终需求的DataStream,就需要创建一个Sink并把数据传到里面去。比如可以这样:

writeAsText(String path)
print()

这是把DataStream以文本的形式记录,并打印出来。

2.5 启动程序的执行

以上的内容都完成之后,就到了最关键的一步:启动程序的执行。主要通过调用StreamExecutionEnvironment的方法来实现:

  • execute()

比如:

 env.execute();

3 参考

Apache Flink

Basic API Concepts

Building real-time dashboard applications with Apache Flink, Elasticsearch, and Kibana

凌波微步Flink——Flink的技术逻辑与编程步骤剖析相关推荐

  1. 大数据计算引擎之Flink Flink CEP复杂事件编程

    原文地址:大数据计算引擎之Flink Flink CEP复杂事件编程 复杂事件编程(CEP)是一种基于流处理的技术,将系统数据看作不同类型的事件,通过分析事件之间的关系,建立不同的时事件系序列库,并利 ...

  2. 重磅!《Apache Flink 十大技术难点实战》发布

    简介:总结生产环境十大常见难点,10篇技术实战文章帮你完成故障识别.问题定位.性能优化等全链路过程,实现从基础概念的准确理解到上手实操的精准熟练,从容应对生产环境中的技术难题! <Apache ...

  3. 重磅福利!《Apache Flink 十大技术难点实战》发布,帮你从容应对生产环境中的技术难题...

    精选30+云产品,助力企业轻松上云!>>> 简介: 总结生产环境十大常见难点,10篇技术实战文章帮你完成故障识别.问题定位.性能优化等全链路过程,实现从基础概念的准确理解到上手实操的 ...

  4. 凌波微步Flink——Flink API中的一些基础概念

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/95355619 本文出自[我是干勾鱼的博客] Ingredients: Java: ...

  5. 快速入门 | 篇十三:正运动技术运动控制器ZDevelop 编程软件的使用

    之前正运动技术与大家分享了,运动控制器的固件升级.ZBasic程序开发.ZPLC程序开发.与触摸屏通讯和输入/输出IO的应用.运动控制器数据与存储的应用.运动控制器ZCAN.EtherCAT总线的使用 ...

  6. # 技术-202111-《并发编程的艺术》阅读笔记

    技术-202111-<并发编程的艺术> 创建时间: 2021/11/8 20:46 更新时间: 2022/8/22 19:31 作者: HelloXF 标签: 知识库 第一章 并发编程的挑 ...

  7. java web 编程技术 pdf_Java WEB编程技术.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava Java WEB编程技术.pdf289页 本文档一共被 ...

  8. 现代检测技术课程实验编程:最小二乘法应用编程

    现代检测技术课程实验编程:最小二乘法应用编程 一.最小二乘法编程题目描述 二.最小二乘法编程题目要求 三.什么是最小二乘法 四.最小二乘法编程步骤 4.1. 界面的设计 4.2. 程序的编写 4.2. ...

  9. 基于多线程技术和自定义消息编程实现Windows 9x异步串行通信

    基于多线程技术和自定义消息编程实现Windows 9x异步串行通信 张志明 李蓉艳 王 磊 摘  要  分析了基于Windows 95/98平台上的异步串行通信程序开发方法,并结合开发实践,用C++B ...

最新文章

  1. printf 中转义字符大全
  2. Flink 必知必会:Flink Runtime Architecture
  3. LinuxC-运算符
  4. 7-2 多项式求和 (10 分)
  5. [SQL实战]之获取当前薪水第二多的员工的emp_no以及其对应的薪水salary
  6. 爬虫_豆瓣全部正在热映电影 (xpath)
  7. Linux开发_WARNING: ‘aclocal-1.14‘ is missing on your system.
  8. 理解函数:对象(this,arguments),方法(apply(),call(),bind())。
  9. ER图(实体关系图)怎么画?
  10. html跳转浏览器打开新页面打开新窗口,用JS控制打开新窗口
  11. 学Python,用Python自动创建PDF文档,实现办公自动化
  12. 计算机管理内默认共享,Win10共享默认在哪里关闭 清除默认共享哪种方法比较彻底...
  13. NW集成打包 自定义图标及注意事项
  14. day14_html和css
  15. 如何在职场上获得良好的起点
  16. 拼多多怎样降低退款率?厦门宝讯网捷
  17. vivo是安卓手机吗_安卓手机系统升级必要吗?看看这个就知道
  18. python的subprocess模块
  19. 微信公众号掉粉的16种原因!
  20. DAVINCI DM3730开发攻略——DVSDK4_03和双核CODEC机制介绍

热门文章

  1. Generalizing from a Few Examples: A Survey on Few-Shot Learning 小样本学习最新综述| Introduction and Overview
  2. mysql开启/关闭安全模式
  3. python编程*三角形图形思路_如何使用python制作形状(对角线、倒三角形)?
  4. MasterCam9 CNC程序文件转刀单 程序
  5. 中国智能电动车“登陆”韩国;特斯拉车主将车钥匙芯片植入手臂;日本研究用卫星“太空放牛” | 每日大事件...
  6. java新手入门指南
  7. html js清除画布文字,利用canvas的fillText属性绘制文字并实现居中和清空画布
  8. 高级卸载系统服务器,windows系统卸载服务器
  9. Bootstrap03(图标)
  10. 学习Python和Java哪个好?