2014-01-06 93 views
1

我该如何检查一个分叉的桌子的分区是否正确装有袋子?只检查分区中文件的数量等于表的桶数似乎不够。如何检查每个存储桶中的所有行是否只属于该存储桶。谢谢。蜂巢:带肩表的健康检查

回答

0

得到了它,我不知道它会工作,但我想,如果表由列cluseretd, b分成n个桶,然后hash(a,b)%n是桶号(你可以在hdfs的文件名中看到它)。

如果您不确定,可以随时插入oevrwrite选择自己的分区并将hive.force.bucketing设置为true。

0

如果存储桶是在colA上分区的,那么您可以验证每个存储桶的计数。 假设我们在colA中存储了多年,所以每个存储桶只有一年的行数。我们可以通过运行来验证这一点,并查看是否所有的桶只有一年的行。

SELECT distinct Year FROM bucketed_table tablesample(bucket 1 out of Y on year); 
SELECT distinct Year FROM bucketed_table tablesample(bucket 2 out of Y on year); 

此外,我们可以通过使用where子句运行查询来验证计数。 SELECT count(*) FROM bucketed_table tablesample(bucket 1 out of Y on year);//suppose that bucket 1 stores year X

SELECT count(*) FROM bucketed_table where year=X; 

这又是不是检查您的hvie桶的正确性肯定拍的方式,但肯定的,如果你知道数据良好,您可以使用此策略来验证你的表。