大佬们好,有用过1.15 FileSink DataStream api的合并小文件功能吗,我这里写文件用gz格式压缩,发现合并后的文件读不了。 Format Type使用的是FileSink.forBulkFormat;BulkWriter.Factory使用的是CompressWriterFactory,使用gz压缩;合并文件的Compactor使用的是原生的ConcatFileCompactor。
以下是使用FileSink的相关代码: CompressWriterFactory writer = CompressWriters.forExtractor(new DefaultExtractor()) .withHadoopCompression("Gzip", new Configuration()); FileSink hdfsSink = FileSink.forBulkFormat(new Path("hdfs://xxxx"), writer) .withBucketCheckInterval(60000) .enableCompact( FileCompactStrategy.Builder.newBuilder() .setNumCompactThreads(1024) .enableCompactionOnCheckpoint(3) .build(), new ConcatFileCompactor()) .build(); 当压缩的小文件被合并后,发现这个被合并的文件不可读: 使用hdfs dfs -text /xxxx/2022-08-03--13/compacted-part-00857a94-bf23-4ae7-a55b-d39c2fdca565-0.gz后 报错:text: invalid block type 请问是1.15 FileSink DataStream api目前是还不支持压缩文件的合并吗?还是我有什么地方用错了或者没注意到的? 感谢各位大佬抽空解答!