代码之家  ›  专栏  ›  技术社区  ›  bendl

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

  •  1
  • bendl  · 技术社区  · 8 年前

    我希望能够执行许多Impala查询,并返回执行每个查询所需的时间。使用黑斑羚外壳,我可以通过以下命令来实现这一点:

    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+"
    

    但这只会移除桌子。将查询放入python脚本并使用子进程无法找到 impl 作为命令,scala也是如此。

    1 回复  |  直到 8 年前
        1
  •  1
  •   etopylight    8 年前

    奇怪的是 impala-shell 2>&1 将stderr重定向到stdout

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

    (?=s)