flink使用BucketingSink将文件写入hdfs

本文介绍了如何使用Flink的BucketingSink将数据写入HDFS,但默认会生成多个分片文件。为解决这个问题,探讨了BucketingSink的默认行为,包括基于系统时间的桶划分策略和文件切分机制。同时,提供了程序代码示例,讨论了调整设置以减少分片和实现单个文件输出的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在找一些写入到flink写入到hdfs的方法,然后在官网找到了这个(https://ci.apache.org/projects/flink/flink-docs-release-1.4/dev/connectors/filesystem_sink.html),然后就尝试着去使用这个,虽然能把数据写到hdfs上面去,但是是分片的,结果图如下:

里面的内容是把我原来上传的文件给分片了。ps:我在想能不能在最后的输出将数据不要输出这么多的分片,而是一个总的文件。

默认情况下,当元素到达时,当前的系统时间将会降级,并使用日期时间模式“yyyy-MM-dd - HH”命名这些存储区。此模式将传递到具有当前系统时间的SimpleDateFormat以形成存储桶路径。每当遇到新的日期时,都会创建一个新的桶。例如,如果您有一个包含分钟的模式作为最细粒度,您将每分钟获得一个新的桶。每个桶本身就是一个包含几个零件文件的目录:每个并行实例的接收器将创建自己的零件文件,当零件文件变得太大时,槽也会在其他文件旁边创建一个新的零件文件。当桶变得不活动时,打开的零件文件将被刷新并关闭。一个桶在最近没有被写入时被视为非活动的。默认情况下,接收器每分钟检查非活动的桶,并关闭一分钟内尚未写入的任何桶。可以在BucketingSink上使用setInactiveBucketCheckInterval()和setInactiveBucketThreshol

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值