将DataSet <row>保存为CSV

时间:2016-11-29 20:25:04

标签: apache-flink

是否可以将DataSet<Row>保存为CSV输出? toDataSet API期望Row.classwriteAsCSV期望Tuple。你能帮忙吗?

DataSet<Row> finalResult = tEnv.toDataSet(flattenedTripByGender, Row.class);
finalResult.writeAsCsv("../data/tripbygender.csv");

这是一个错误:

Caused by: java.lang.ClassCastException: org.apache.flink.api.table.Row cannot be cast to org.apache.flink.api.java.tuple.Tuple at org.apache.flink.api.java.io.CsvOutputFormat.writeRecord(CsvOutputFormat.java:44)

阿鲁娜

1 个答案:

答案 0 :(得分:0)

您可以直接发出Table,而无需使用DataSet将其转换为TableSink

Flink 1.1.x附带CsvTableSink,其使用方法如下:

// compute your result
Table result = // ...

// create a TableSink
TableSink sink = new CsvTableSink("/path/to/file", fieldDelim = "|");
// write the result Table to the TableSink
result.writeToSink(sink);