標籤:定義 元素 tee 命令列 stream 並且 out lte 機器
- Flink程式是實現分布式集合轉換的常規程式。集合最初是從源建立的。通過接收器(slink)返回結果,接收器可以將資料寫到某個檔案或stdout。Flink可以在各種環境(context)中運行,本地JVM或叢集。
1.資料集和資料流
- Flink用特殊的類
DataSet and DataStream來表示程式中的資料。可以認為他們是可以包含重複資料的不可變資料集合。在DataSet中資料是有限的,而在DataStream中資料是無限的。
- 這些集合不同於java裡的集合,他們是不可變的,一旦被創造就不能改動,也不能簡單的抽查裡面的元素。
- 最初的集合是通過在Flink程式裡添加一個源被創造的,新的集合是使用API方法(如
map, filter)通過轉換得到的。
2.剖析一個Flink程式
- 獲得一個執行環境(execution environment).
- 載入/建立初始資料。
- 指定轉換這些資料。
- 指定放置計算結果的位置。
- 觸發程式執行。
- 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");
Apache Flink - 基本API概念