聊一聊Flink 写 Hive 的小文件问题

本文探讨了Flink 1.11及后续版本写入Hive时可能出现的小文件问题,分析了'sink.shuffle-by-partition.enable'参数对文件生成的影响,并提供了减少小文件的策略,包括设置该参数为true、使用Flink 1.12的小文件合并功能、调整checkpoint周期以及定期合并小文件。
摘要由CSDN通过智能技术生成

背景

Flink 1.11 引入了写Hive的功能后,已经在上线了一段时间。下面就聊聊我自己对Flink 写Hive 小文件的一些问题和看法。

 

问题1:

1.Flink 写 Hive 可能会产生小文件吗?

简单的说,答案是会。

简单总结下Flink 读kafka写Hive的流程

1.Flink 将kafka数据根据设置的分区策略,实时写入对应分区hdfs 目录的临时文件  inprogress,如下图所示。

在inprogress文件的数据,通过hive是无法查询到的。

2.打checkpoint时,将inprogress文件的数据刷到正式文件中,并提交kafka offset。

 

这里有一个关键的点:Flink中一个写hive的并行度,同一时间只能写一个hdfs文件

那么就有一个问题,如果我设置3个并行度,一个checkpoint周期是不是会生成3个文件呢?

这里有一个关键的参数:'sink.shuffle-by-partition.enable'

以上图hive表为例,一级分区为年月日,二级分区为小时,按照数据的event时间分区。

 

'sink.shuffle-by-partition.enable'=f

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值