配置单元外部表最佳分区大小

kx1ctssn  于 2021-06-29  发布在  Hive
关注(0)|答案(3)|浏览(275)

外部表分区的最佳大小是多少?我计划按年/月/日对表进行分区,每天大约有2gb的数据。

eulz3vhy

eulz3vhy1#

最佳的表分区是这样的,即与您的表使用场景相匹配。分区的选择应基于:
如何查询数据(如果您主要需要处理日常数据,则按日期进行分区)。
如何加载数据(并行线程应该加载自己的分区,而不是重叠)
2gb对于一个文件来说也不算太多,不过这也取决于您的使用场景。避免不必要的复杂和冗余分区,比如(年、月、日)-在这种情况下,日期就足够进行分区修剪了。

ee7vknir

ee7vknir2#

配置单元分区在数据稀疏的情况下最有效。我所说的稀疏是指数据内部有可见的分区,例如按年、月或日。
在您的例子中,按日期进行分区没有多大意义,因为每天将有2GB的数据,而这些数据不太大,无法处理。按周或月分区更有意义,因为它将优化查询时间,并且不会创建太多小的分区文件。

nnsrf1az

nnsrf1az3#

配置单元分区定义将存储在元存储中,因此太多的分区将占用元存储中的大量空间。
分区将作为目录存储在hdfs中,因此许多分区键将生成hirachical目录,这使得它们的扫描速度变慢。
查询将作为mapreduce作业执行,因此创建太小的分区是没有用的。
根据具体情况,考虑如何查询您的数据。对于您的情况,我更喜欢一个定义为'yyyymmdd'的键,因此我们将获得365个分区/年,表目录中只有一个级别和2g数据/分区,这对于mapreduce作业很好。
为了获得完整的答案,如果您使用hive<0.12,请键入分区键字符串,请参见此处。
有用的博客在这里。

相关问题