上文《Flink应用开发系列(七)DataSet开发之自带的写入存储函数》我们介绍了flink开发中Dataset中写入存储的函数,但是在实际情况中,我们会涉及到排序的输出,也就是在最后的输出结果中,我们需要根据某个字段进行排序,然后再写入存储中。
但是在这里首先声明一下,截至flink1.17.0版本,目前还不支持全局的排序输出。
但是在这里首先声明一下,截至flink1.17.0版本,目前还不支持全局的排序输出。
但是在这里首先声明一下,截至flink1.17.0版本,目前还不支持全局的排序输出。
所以如果我们想要排序输出的话,只能通过局部输出,也就是某一个partition内部进行排序输出,所以这里涉及到的排序输出的话,目前只支持partition部分的排序输出。示例如下:
// sort output on String field in ascending order tData.sortPartition(1, Order.ASCENDING).print(); // sort output on Double field in descending and Integer field in ascending order tData.sortPartition(2, Order.DESCENDING).sortPartition(0, Order.ASCENDING).print(); // sort output on the "author" field of nested BookPojo in descending order pData.sortPartition("f0.author", Order.DESCENDING).writeAsText(...); // sort output on the full tuple in ascending order tData.sortPartition("*", Order.ASCENDING).writeAsCsv(...); // sort atomic type (String) output in descending order sData.sortPartition("*", Order.DESCENDING).writeAsText(...);
总结:
1、排序输出只支持局部的排序输出,不支持全局输出。
2、如果想要达到全局输出的效果,可以把partition设置为1即可。
还没有评论,来说两句吧...