可以计算分区的数量吗?

izkcnapc  于 2021-06-03  发布在  Hadoop
关注(0)|答案(6)|浏览(308)

我正在做一个测试,在这个测试中,我必须找出一个表的分区数,并检查它是否正确。如果我使用 show partitions TableName 我按名称获取所有分区,但我希望获取分区的数量,类似于下面的内容 show count(partitions) TableName (顺便说一句。。所以这是不好的)和得到12(例如)。
有什么办法可以做到这一点吗??

iq0todco

iq0todco1#

使用配置单元cli

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

--静音是启用静音模式
-e告诉配置单元执行带引号的查询字符串

yiytaume

yiytaume2#

使用以下语法:

show create table <table name>;
az31mfrm

az31mfrm3#

您可以使用:

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

3wabscal4#

通过使用下面的命令,您将获得所有分区,并在最后显示获取的行数。行的数量意味着分区的数量
显示分区[数据库名称]表名称[分区(分区规格)];
例如-
[在此处输入图像描述][1]

3qpi33ja

3qpi33ja5#

您可以使用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
yi0zb3m4

yi0zb3m46#

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

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

相关问题