Flink предоставляет HDFS-соединитель , который можно использовать для записи данных в любую файловую систему, поддерживаемую Hadoop Filesystem .
Предоставленный приемник - это приемник Bucketing, который разбивает поток данных на папки, содержащие циклические файлы. Поведение сегмента, а также запись можно настроить с помощью таких параметров, как batch size
и batch roll over time interval
В документе Flink приведен следующий пример -
DataStream<Tuple2<IntWritable,Text>> input = ...;
BucketingSink<String> sink = new BucketingSink<String>("/base/path");
sink.setBucketer(new DateTimeBucketer<String>("yyyy-MM-dd--HHmm", ZoneId.of("America/Los_Angeles")));
sink.setWriter(new SequenceFileWriter<IntWritable, Text>());
sink.setBatchSize(1024 * 1024 * 400); // this is 400 MB,
sink.setBatchRolloverInterval(20 * 60 * 1000); // this is 20 mins
input.addSink(sink);