我正在做一个测试,在这个测试中,我必须找出一个表的分区数,并检查它是否正确。如果我使用 show partitions TableName 我按名称获取所有分区,但我希望获取分区的数量,类似于下面的内容 show count(partitions) TableName (顺便说一句。。所以这是不好的)和得到12(例如)。有什么办法可以做到这一点吗??
show partitions TableName
show count(partitions) TableName
iq0todco1#
使用配置单元cli
$ hive --silent -e "show partitions <dbName>.<tableName>;" | wc -l
--静音是启用静音模式-e告诉配置单元执行带引号的查询字符串
yiytaume2#
使用以下语法:
show create table <table name>;
az31mfrm3#
您可以使用:
select count(distinct <partition key>) from <TableName>;
3wabscal4#
通过使用下面的命令,您将获得所有分区,并在最后显示获取的行数。行的数量意味着分区的数量显示分区[数据库名称]表名称[分区(分区规格)];例如-[在此处输入图像描述][1]
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
yi0zb3m46#
在scala中,您可以执行以下操作:
sql("show partitions <table_name>").count()
6条答案
按热度按时间iq0todco1#
使用配置单元cli
--静音是启用静音模式
-e告诉配置单元执行带引号的查询字符串
yiytaume2#
使用以下语法:
az31mfrm3#
您可以使用:
3wabscal4#
通过使用下面的命令,您将获得所有分区,并在最后显示获取的行数。行的数量意味着分区的数量
显示分区[数据库名称]表名称[分区(分区规格)];
例如-
[在此处输入图像描述][1]
3qpi33ja5#
您可以使用webhcat接口来获取这样的信息。这样做的好处是,您可以从服务器可访问的任何位置运行该命令。结果是json—使用您选择的json解析器来处理结果。
在这个将webhcat结果管道化到python的示例中,只返回表示该表的分区数的数字24(服务器名称是名称(节点)。
yi0zb3m46#
在scala中,您可以执行以下操作: