Apache Flink - 基本API概念

  • Flink程序是实现分布式集合转换的常规程序。集合最初是从源创建的。通过接收器(slink)返回结果,接收器可以将数据写到某个文件或stdout。Flink可以在各种环境(context)中运行,本地JVM或集群。

1.数据集和数据流

  • Flink用特殊的类DataSet and DataStream来表示程序中的数据。可以认为他们是可以包含重复数据的不可变数据集合。在DataSet中数据是有限的,而在DataStream中数据是无限的。
  • 这些集合不同于java里的集合,他们是不可变的,一旦被创造就不能改动,也不能简单的抽查里面的元素。
  • 最初的集合是通过在Flink程序里添加一个源被创造的,新的集合是使用API方法(如mapfilter)通过转换得到的。

2.剖析一个Flink程序

  • 每个程序包含相同的基本部分:
  1. 获得一个执行环境(execution environment).
  2. 加载/创建初始数据。
  3. 指定转换这些数据。
  4. 指定放置计算结果的位置。
  5. 触发程序执行。
  • StreamExecutionEnvironment是所有Flink程序的基础。可以通过以下静态方法获得:
    getExecutionEnvironment()
    
    createLocalEnvironment()
    
    createRemoteEnvironment(String host, int port, String... jarFiles)

    通常只需要使用getExecutionEnvironment()方法,因为这将根据环境做出正确的事:如果你执行你的程序在IDE上或着作为一个普通Java程序,它将创建一个本地环境,将在本地机器上执行程序。如果您从您的程序创建了一个JAR文件,并通过命令行调用它,Flink集群管理者将执行你的main方法并且getExecutionEnvironment()将返回一个在一个集群上执行程序的执行环境。

  • 用于指定数据源,执行环境有几个方法来从文件读取:你可以逐行阅读,像CSV文件,或者使用完全自定义数据输入格式。要读取一个文本文件的顺序,您可以使用:
    final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    
    DataStream<String> text = env.readTextFile("file:///path/to/file");

猜你喜欢

转载自www.cnblogs.com/ooffff/p/9426407.html