1. 解决Hive分区小文件问题的一种思路

文章探讨了在Hive中处理数据采集时遇到的小文件问题,提出了一种新的分区策略。该策略受到Kafka文件存储设计的启发,创建一个索引表记录日期和对应偏移量,通过偏移量对数据进行分区,以避免小文件过多。同时,文章提到了可能存在的数据过于集中的风险,即如果数据量持续低于分区阈值,多天数据会存储在同一分区。
摘要由CSDN通过智能技术生成
问题描述:

现在每天都需要将数据采集到Hive仓库,但是每天采集的数据量不固定,有时多有时少,少的时候甚至只有一条数据。如果按天分区(将每天采集到的数据单独存储到一个分区),会出现数据量少的天数文件太小,久而久之就是小文件问题。请问怎么解决?如何重新设计分区?

初步思路:(将多天的数据存储在一个分区)

参考Kafka里面的文件存储设计,简单点说就是做一个索引表。索引表记录具体日期对应的偏移量(当天数据所在的分区号),数据表改为以偏移量做分区。
查询时,根据具体日期通过索引表获取对应的偏移量(即该天数据所在的分区号),再拿偏移量(分区号)去数据表查数据。索引表一天一条记录,数据量很小,不会有太大负担。
判断偏移量是否+1:判断 当天之前 未存储到分区中的数据量大小是否合适开辟一个新的分区,合适就将当天数据的偏移量+1,不合适则偏移量不变。
索引表草图如图所示:
在这里插入图片描述
此处每次的偏移量是通过简单的+1来实现的,但是这样也存在一个问题(目前我还不清楚该问题是不是问题):数据可能会过于集中(如果数据量一直低于 可以开辟新分区的阈值,那么很多天的数据就都会被分配到同一个分区,多天的数据全堆在一起了)。

以上思路来自技术交流群中一位网友的热心分享,在此表示感谢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dataer__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值