外部表分区的最佳大小是多少? 我计划按年/月/日对表格进行分区,每天我们得到大约2GB的数据。
答案 0 :(得分:0)
最佳表分区与您的表使用方案匹配。 应根据以下内容选择分区:
即使对于一个文件,2Gb也不算太多,但它又取决于您的使用场景。避免不必要的复杂和冗余分区,如(年,月,日) - 在这种情况下,日期足以进行分区修剪。
答案 1 :(得分:0)
Hive分区定义将存储在Metastore中,因此过多的分区将占用Metastore中的大量空间。
分区将作为目录存储在HDFS中,因此许多分区键将生成层级目录,使扫描速度变慢。
您的查询将作为MapReduce作业执行,因此制作太小的分区是没用的。
根据具体情况,考虑如何查询您的数据。对于你的情况,我更喜欢一个定义为'yyyymmdd'的键,因此我们将获得365个分区/年,表目录中只有一个级别和2G数据/分区,这对于MapReduce作业来说很不错。
对于答案的完整性,如果你使用Hive< 0.12,键入分区键字符串,请参阅here。
有用的博客here。
答案 2 :(得分:0)
在数据稀疏的情况下,配置单元分区最有效。稀疏是指数据内部具有可见的分区,例如按年,月或日。
在您的情况下,按日期进行分区没有多大意义,因为每天将有2 Gb的数据,这些数据不会太大。按周或按月进行分区更有意义,因为它将优化查询时间,并且不会创建太多小的分区文件。