1. 比较简单的思路是可以吧hdfs文件弄成hive表,然后使用 类似下面sql : set hive.merge.mapredfiles = true //在Map-Reduce的任务结束时合并小文件 set hive.merge.size.per.task = 256*1000*1000 //合并文件的大小 set hive.merge.smallfiles.avgsize=16000000
insert overwrite table_name select * from table_name1 2. 直接通过spark的coalesce()方法和repartition()方法 来进行合并小文件 具体大概上面两种思路: 然后把上面的任务配置一个定时任务定期合并hdfs小文件即可; 具体你可以按照我上面的两种思路进行上网搜索有具体的实现。 Tony <1298877...@qq.com.invalid> 于2022年2月24日周四 15:16写道: > 请问合并小文件的定时任务,是个啥思路,或者有参考的资料吗 > > > > ------------------ 原始邮件 ------------------ > 发件人: "wenjie li"<liwenjie...@gmail.com>; > 发送时间: 2022年2月24日(星期四) 下午2:09 > 收件人: "user-zh"<user-zh@flink.apache.org>; > 主题: Re: Flink数据写入HDFS > > > > 1. 使用 BucketingSink 写入HDFS 可以配置滚动策略来决定写文件的大小 > 2. 如果由于写入频率大和输出数据量比较小的情况第一种方案不是很好,可以考虑在后面另外启动一个合并小文件的定时任务。 > > Tony <1298877...@qq.com.invalid> 于2022年2月24日周四 12:10写道: > > > Flink数据写入HDFS,如何解决小文件问题? > > FlinkSQL有小文件合并策略,Flink dataStream 写入HDFS,如何解决?