Hive外部表最佳分区大小

时间:2016-06-01 17:52:12

标签: hive

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

3 个答案:

答案 0 :(得分:0)

最佳表分区与您的表使用方案匹配。 应根据以下内容选择分区:

  1. 如何查询数据(如果您需要主要使用每日数据,然后按日期分区)。
  2. 如何加载数据(并行线程应加载自己的数据) 分区,没有重叠)
  3. 即使对于一个文件,2Gb也不算太多,但它又取决于您的使用场景。避免不必要的复杂和冗余分区,如(年,月,日) - 在这种情况下,日期足以进行分区修剪。

答案 1 :(得分:0)

Hive分区定义将存储在Metastore中,因此过多的分区将占用Metastore中的大量空间。

分区将作为目录存储在HDFS中,因此许多分区键将生成层级目录,使扫描速度变慢。

您的查询将作为MapReduce作业执行,因此制作太小的分区是没用的。

根据具体情况,考虑如何查询您的数据。对于你的情况,我更喜欢一个定义为'yyyymmdd'的键,因此我们将获得365个分区/年,表目录中只有一个级别和2G数据/分区,这对于MapReduce作业来说很不错。

对于答案的完整性,如果你使用Hive< 0.12,键入分区键字符串,请参阅here

有用的博客here

答案 2 :(得分:0)

在数据稀疏的情况下,配置单元分区最有效。稀疏是指数据内部具有可见的分区,例如按年,月或日。

在您的情况下,按日期进行分区没有多大意义,因为每天将有2 Gb的数据,这些数据不会太大。按周或按月进行分区更有意义,因为它将优化查询时间,并且不会创建太多小的分区文件。