Flink 原理、实战与性能优化 (17):环境准备 2.4.2

阅读数:4 2019 年 12 月 11 日 20:42

Flink原理、实战与性能优化(17):环境准备 2.4.2

(运行程序)

内容简介
这是一部以实战为导向,能指导读者零基础掌握 Flink 并快速完成进阶的著作,从功能、原理、实战和调优等 4 个维度循序渐进地讲解了如何利用 Flink 进行分布式流式应用开发。作者是该领域的资深专家,现就职于第四范式,曾就职于明略数据。
全书一共 10 章,逻辑上可以分为三个部分:
第一部分(第 1~2 章)
主要介绍了 Flink 的核心概念、特性、应用场景、基本架构,开发环境的搭建和配置,以及源代码的编译。
第二部分(第 3~9 章)
详细讲解了 Flink 的编程范式,各种编程接口的功能、应用场景和使用方法,以及核心模块和组件的原理和使用。
第三部分(第 10 章)
重点讲解了 Flink 的监控和优化,参数调优,以及对反压、Checkpoint 和内存的优化。

启动 Scala Shell 交互式解释器后,就可以进行 Flink 流式应用或批量应用的开发。需要注意的是,Flink 已经在启动的执行环境中初始化好了相应的 Environment,分别使用“benv”和“senv”获取批量计算环境和流式计算环境,然后使用对应环境中的 API 开发 Flink 应用。以下代码实例分别是用批量和流式实现 WordCount 的应用,读者可以直接在启动 Flink Scala Shell 客户端后执行并输出结果。

  • 通过 Scala-Shell 运行批量计算程序,调用 benv 完成对单词数量的统计。
复制代码
scala> val textBatch = benv.fromElements(
"To be, or not to be,--that is the question:--",
"Whether 'tis nobler in the mind to suffer")
scala> val counts = textBatch
.flatMap { _.toLowerCase.split("\\W+") }
.map { (_, 1) }.groupBy(0).sum(1)
scala> counts.print()
  • 通过 Scala-Shell 运行流式计算,调用 senv 完成对单词数量的统计。
复制代码
scala> val textStreaming = senv.fromElements(
"flink has Stateful Computations over Data Streams")
scala> val countsStreaming = textStreaming
.flatMap { _.toLowerCase.split("\\W+") }
.map { (_, 1) }.keyBy(0).sum(1)
scala> countsStreaming.print()
scala> senv.execute("Streaming Wordcount")

注意 用户在使用交互式解释器方式进行应用开发的过程中,流式作业和批量作业中的一些操作(例如写入文件)并不会立即执行,而是需要用户在程序的最后执行 env.execute(“appname”) 命令,这样整个程序才能触发运行。

Flink原理、实战与性能优化(17):环境准备 2.4.2

购书地址 https://item.jd.com/12518733.html?dist=jd

评论

发布