执行impala查询并获取查询时间

nhaq1z21  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(464)

我希望能够执行许多impala查询,并返回执行每个查询所花费的时间。使用impala shell,我可以通过以下命令完成此操作:

impl -q "select count(*) from database.table;"

这给了我输出

Using service name 'impala'
SSL is enabled. Impala server certificates will NOT be verified (set --ca_cert to change)
Connected to*****.************:21000
Server version: impalad version 2.6.0-cdh5.8.3 RELEASE (build c644f476b774db9db87a619628f7a6ecc5f843e0)
Query: select count(*) from database.table
+----------+
| count(*) |
+----------+
| 1130976  |
+----------+
Fetched 1 row(s) in 0.86s

我希望能够提取最后一行并提取时间。这其实并不重要,这就是为什么我没有标记一种语言。我试过这样使用grep:

impl -q "select count(*) from database.table" | grep -Po "\d+\.\d+"

但那只会把table移走。将查询放入python脚本并使用subprocess找不到 impl 作为命令,scala也是如此。

5anewei6

5anewei61#

奇怪的是 impala-shell 将这些消息转储到stderr而不是stdout,因此要获取最后一行,必须附加 2>&1 将stderr重定向到stdout

impala-shell -q "query string" 2>&1 | grep -Po "\d+\.\d+(?=s)"

注意,积极的展望 (?=s) 可能是为了避免捕获版本号

相关问题