python flink_《Flink官方文档》Python 编程指南测试版

原文链接  译者:hjjxd    校对:清英

Flink中的分析程序实现了对数据集的某些操作 (例如,数据过滤,映射,合并,分组)。这些数据最初来源于特定的数据源(例如来自于读文件或数据集合)。操作执行的结果通过数据池以写入数据到(分布式)文件系统或标准输出(例如命令行终端)的形式返回。Flink程序可以运行在不同的环境中,既能够独立运行,也可以嵌入到其他程序中运行。程序可以运行在本地的JVM上,也可以运行在服务器集群中。

为了创建你自己的Flink程序,我们鼓励你从program skeleton(程序框架)开始,并逐渐增加你自己的transformations(变化)。以下是更多的用法和高级特性的索引。

示例程序

以下程序是一段完整可运行的WordCount示例程序。你可以复制粘贴这些代码并在本地运行。

from flink.plan.Environment import get_environment

from flink.functions.GroupReduceFunction import GroupReduceFunction

class Adder(GroupReduceFunction):

def reduce(self, iterator, collector):

count, word = iterator.next()

count += sum([x[0] for x in iterator])

collector.collect((count, word))

env = get_environment()

data = env.from_elements("Who's there?",

"I think I hear them. Stand, ho! Who's there?")

data \

.flat_map(lambda x, c: [(1, word) for word in x.lower().split()]) \

.group_by(1) \

.reduce_group(Adder(), combinable=True) \

.output()

env.execute(local=True)

程序框架

从示例程序可以看出,Flink程序看起来就像普通的python程序一样。每个程序都包含相同的基本组成部分:

1.获取一个运行环境

2.加载/创建初始数据

3.指定对这些数据的操作

4.指定计算结果的存放位置

5.运行程序

接下来,我们将对每个步骤给出概述,更多细节可以参考与之对应的小节。

Environment(运行环境)是所有Flink程序的基础。你可以通过调用Environment类中的一些静态方法来建立一个环境:

get_environment()

运行环境可通过多种读文件的方式来指定数据源。如果是简单的按行读取文本文件,你可以采用:

env = get_environment()

text = env.read_text("file:///path/to/file")

这样,你就获得了可以进行操作(apply transformations)的数据集。关于数据源和输入格式的更多信息,请参考 Data Sources。

一旦你获得了一个数据集DataSet,你就可以通过transformations来创建一个新的数据集,并把它写入到文件,再次transform,或者与其他数据集相结合。你可以通过对数据集调用自己个性化定制的函数来进行数据操作。例如,一个类似这样的数据映射操作:

data.map(lambda x: x*2)

这将会创建一个新的数据集,其中的每个数据都是原来数据集中的2倍。若要获取关于所有transformations的更多信息,及所有数据操作的列表,请参考Transformations。

当你需要将所获得的数据集写入到磁盘时,调用下面三种函数的其中一个即可。

data.write_text("", WriteMode=Constants.NO_OVERWRITE)

write_csv("", line_delimiter='\n', field_delimiter=',', write_mode=Constants.NO_OVERWRITE)

output()

其中,最后一种方法仅适用于在本机上进行开发/调试,它会将数据集的内容输出到标准输出。(请注意,当函数在集群上运行时,结果将会输出到整个集群节点的标准输出流,即输出到workers的.out文件。)前两种方法,能够将

你可能感兴趣的:(python,flink)