我希望能够执行许多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也是如此。
1条答案
按热度按时间5anewei61#
奇怪的是
impala-shell
将这些消息转储到stderr而不是stdout,因此要获取最后一行,必须附加2>&1
将stderr重定向到stdout注意,积极的展望
(?=s)
可能是为了避免捕获版本号