我使用Flink(带有Hadoop的1.7.1)进行了一些数据处理。最后,我想将包含2个元组的数据集写入文件中。目前,我正在这样做:
<Tuple2<Integer, Point>> pointsClustered = points.getClusteredPoints(...);
pointsClustered.writeAsCsv(params.get("output"), "\n", ",");
但是,我想将CSV标头写入第一行。 Flink's Javadoc API没有为此提供任何选项。此外,我找不到针对它的任何解决方案。
请问您如何做到这一点。非常感谢!
答案 0 :(得分:2)
Flink自己的"C:\\Users\\tom\\source\\repos\\WebDemo\\StudentLib\\Reports\\StudentReport.rdlc"
不支持此功能。您可以做的是扩展CsvOutputFormat
并覆盖CsvOutputFormat
方法,该方法在打开格式时会写入标头。然后,您将使用open
指定新创建的输出格式:
DataSet#output
答案 1 :(得分:0)
我可以通过简单地使用联合将标题行添加到数据集中来解决此限制。这样,第一行将始终是导出的标题行。
DataSet<Tuple8<String, String, String, String, String, String, String, String>> headers = env.fromElements(
Tuple8.of(
"SDMId", "ActivityType", "ActionType", "ActivityId", "ActivityLevel", "Timestamp", "SessionId", "Value"
));
DataSet<Tuple8<String, String, String, String, String, String, String, String>> results =
headers.union(skillResults);
results.writeAsCsv("file:///Users/karthsub/Desktop/first_export.csv", FileSystem.WriteMode.OVERWRITE).setParallelism(1);