使用外部 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()
為我們做了。