2014-01-06 90 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桶的正確性肯定拍的方式,但肯定的,如果你知道數據良好,您可以使用此策略來驗證你的表。