是否可以计算分区的数量?

qojgxg4l  于 2022-11-01  发布在  Hadoop
关注(0)|答案(7)|浏览(199)

我正在做一个测试,我必须找出一个表的分区数,并检查它是否正确。如果我使用show partitions TableName,我会按名称得到所有分区,但我希望得到分区数,就像show count(partitions) TableName沿着的东西(它返回OK btw..所以它不好),得到12(例如)。
有没有办法做到这一点?

3ks5zfa0

3ks5zfa01#

使用Hive CLI

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

--silent用于启用无提示模式
-e告诉配置单元执行引用查询字符串

bvjveswy

bvjveswy2#

您可以用途:

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

n1bvdmb63#

通过使用下面的命令,您将获得所有分区,并且在最后它还会显示提取的行数。
[数据库名称.]表名称[分区(分区规范)];
〈失败的图片示例〉

fkvaft9z

fkvaft9z4#

你可以使用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
xnifntxz

xnifntxz5#

在scala中,你可以做以下事情:

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

csga3l586#

我用了跟踪。
beeline -silent --showHeader=false --outputformat=csv2 -e 'show partitions <dbname>.<tablename>' | wc -l

sbtkgmzw

sbtkgmzw7#

请使用下列语法:

show create table <table name>;

相关问题