【问题标题】:how to stop running bigquery query如何停止运行 bigquery 查询
【发布时间】:2013-03-21 16:24:33
【问题描述】:

有什么方法可以取消正在运行的查询吗?

我使用网络界面。首先,我对 10k 行和超过 20k 行的表进行了一系列测试,响应以秒为单位。但是我在 100k 行的表上运行三重联接查询,几千秒后它似乎无穷无尽。

我只是想在将所有工作转移到 bigquery 之前运行一些测试,但现在我担心它会花费整个每月 100gb 的免费限制 + 更多。

该表是一个简单的整数值键值对。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    shell 命令bq cancel job_id 现在将执行此操作。您可以从 BigQuery 控制台的 Query History 标签中获取 job_id。如果您通过 CLI 启动查询,它会将job_id 记录到标准输出中。

    【讨论】:

      【解决方案2】:

      目前没有办法通过 API 或 UI 停止正在运行的查询。您可以关闭查询生成器(通过 UI 右上角的“x”)并再次打开它以使 UI 再次响应。我们目前正在 UI 中开发此功能。

      令人惊讶的是,即使是连接,对于这种大小的表,查询也会花费这么长时间,除非您的连接是在非唯一键上连接,因此生成匹配键的叉积需要时间。例如:

      SELECT t1.foo 
      FROM (SELECT 1 as one, foo FROM table1) t1 
      JOIN (SELECT 1 as one, bar FROM table2) t2
      ON t1.one = t2.one
      

      将生成 n x m 行,其中 n 是 table1 中的行数,m 是 table2 中的行数。您的查询是否有可能做类似的事情?如果没有,您可以发送查询吗? (也许在另一个 SO 问题中,与慢连接性能有关)。

      【讨论】:

      • 嗨,乔丹。谢谢你的回答,很有帮助。与此同时,我的windoz一夜之间安装了更新并重新启动自己丢失了我所有的桌面工作,所以我什至看不到它是否完成了查询。无论如何,这是查询:SELECT aa.e1, c.n_id_customer, count(*) from (select a.i_euvn as e1, b.i_euvn as e2 FROM [ovca.ovca100k] a join [ovca.ovca100k] b on a.n_id_customer=b.n_id_customer) as aa join [ovca.ovca100k] c on aa.e2=c.i_euvn group each by 1,2 order by 1,3 desc;
      • 我错了,我可以看到查询结果,生成了 15 080 486 行结果。
      • 奇怪的是资源使用情况根本没有改变。我仍然只有Data Processed Per Day 14 MB,尽管我确定查询吃的更多
      • 如果您的表只有 10k-20k 行,则处理的数据量是合理的,因为 BigQuery 只对您处理的源数据量收费。但听起来连接生成的行数确实比您开始时多得多。
      【解决方案3】:

      我们没有找到在使用 Java API 时停止作业的方法,据我所知,您无法在 Web 界面上停止作业。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-12
        • 2011-04-16
        • 2011-01-05
        • 2017-12-13
        • 1970-01-01
        • 1970-01-01
        • 2014-10-26
        • 2013-09-11
        相关资源
        最近更新 更多