Flink BucketingSink 源码分析
0x1 摘要 BucketingSink类提供了非常完美的功能支持数据落HDFS,在实际业务中不建议自己去实现,直接采用此类可以避免一些坑。注:此文基于Flink 1.6.3 版本源码。 0x2 BucketingSink 类结构分析 我们关注RichSinkFunction、CheckpointedFunction、CheckpointListener三个父类 0x3 先看使用例子 BucketingSink<Object> sink = new BucketingSink<>(path); sink.setBucketer(new DateTimeBucketer<>("yyyy/MM/dd")); // 字符串形式输出 sink.setWriter(new StringWriter<>()); // 每个文件最大小限制256M,达到后关闭或创建新文件 sink.setBatchSize(1024 * 1024 * 256L); // 设定批次滚动时间翻滚间隔30分钟,达到后关闭或创建新文件,和上面的`batchSize`双重检查决定...