hive:带扣表健全性检查

lokaqttq  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(342)

如何检查带扣表的分区是否正确带扣?仅仅检查分区中的文件数等于表的bucket数似乎是不够的。如何检查每个bucket中的所有行是否只属于该bucket。谢谢。

bgibtngc

bgibtngc1#

我不确定它是否有效,但我认为如果表是由a列、b列聚集到n个桶中的话 hash(a,b)%n 是bucket编号(您可以在hdfs中的文件名中看到它)。
如果您不确定,您可以始终插入oevrwrite分区,从其自身和设置中进行选择 hive.force.bucketing 是真的。

jaxagkaj

jaxagkaj2#

如果该桶在cola上分区,那么您可以验证每个桶的计数。假设我们在可乐中储存了数年,那么每个桶只会有一个特定年份的行。我们可以通过运行来验证这一点,看看是否所有的bucket都只有一年的行。

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;

同样,这不是检查hvi bucket正确性的可靠方法,但是如果您非常了解数据,并且可以使用此策略验证表,则可以。
sdnqo3pr

sdnqo3pr3#

我希望下面的内容会有所帮助

DESCRIBE EXTENDED page_view PARTITION (ds='2008-08-08');

我从这里得到的
https://cwiki.apache.org/confluence/display/hive/tutorial

相关问题