2016-11-29 3 views
3

Можно ли сохранить DataSet<Row> как CSV-выход? toDataSet API ожидает Row.class и writeAsCSV ожидает кортеж. Не могли бы вы помочь?Сохранение DataSet <Row> как CSV

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) 

Аруна

ответ

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); 
+0

Благодаря Фабиан, это работает! – Aruna

+0

Если этот ответ решает вашу проблему, вы должны соответствующим образом пометить ответ. – twalthr