使用外部 Sink

可以將表寫入 TableSink,這是一個支援不同格式和檔案系統的通用介面。批處理表只能寫入 BatchTableSink,而流表需要 StreamTableSink

目前,flink 僅提供 CsvTableSink 介面。

用法

在上面的示例中,替換:

DataSet<Row> result = tableEnv.toDataSet( table, Row.class );
result.print();

有:

TableSink sink = new CsvTableSink("/tmp/results", ",");
// write the result Table to the TableSink
table.writeToSink(sink);
// start the job
env.execute();

/tmp/results 是一個資料夾,因為 flink 做並行操作。因此,如果你有 4 個處理器,結果資料夾中可能會有 4 個檔案。

另外,請注意我們明確地稱之為 env.execute():這是啟動 flink 工作所必需的,但在前面的例子中,print() 為我們做了。