是否可以统计分区数量?

问题描述 投票:0回答:8

我正在做一个测试,我必须找出一个表的分区数并检查它是否正确。如果我使用

show partitions TableName
,我会按名称获取所有分区,但我希望获取分区的数量,就像
show count(partitions) TableName
(顺便说一句,它会重新调整......所以它不好)并得到12(对于前.).
有什么办法可以做到这一点??

hadoop hive hiveql
8个回答
6
投票

使用 Hive CLI

$ hive --silent -e "show partitions <dbName>.<tableName>;" | wc -l

--silent 是开启静音模式

-e 告诉 hive 执行引用的查询字符串


3
投票

您可以使用:

select count(distinct <partition key>) from <TableName>;

1
投票

通过使用以下命令,您将获得所有分区,并在最后显示获取的行数。行数意味着分区数

SHOW PARTITIONS [db_name.]table_name [PARTITION(partition_spec)];

< failed pictoral example >


0
投票

你可以使用 WebHCat 接口来获取这样的信息。这样做的好处是您可以从服务器可访问的任何位置运行命令。结果是 JSON - 使用您选择的 JSON 解析器来处理结果。

在这个将 WebHCat 结果通过管道传输到 Python 的示例中,仅返回数字 24,表示该表的分区数。 (服务器名称是名称节点)。

curl -s 'http://*myservername*:50111/templeton/v1/ddl/database/*mydatabasename*/table/*mytablename*/partition?user.name=*myusername*' | python -c 'import sys, json; print len(json.load(sys.stdin)["partitions"])'
24

0
投票

在 Scala 中,您可以执行以下操作:

sql("show partitions <table_name>").count()

0
投票

我用了以下内容。

beeline -silent --showHeader=false --outputformat=csv2 -e 'show partitions <dbname>.<tablename>' | wc -l


0
投票

我知道这篇文章很老,但如果有人正在寻找答案,这里是查询。

select count(distinct <partition_column>) as partition_count from <db>.<table_name>;

-3
投票

使用以下语法:

show create table <table name>;
© www.soinside.com 2019 - 2024. All rights reserved.