【问题标题】:BigQuery "resources exceeded"; what could be the culprit?BigQuery“超出资源”;罪魁祸首是什么?
【发布时间】:2016-07-01 20:45:38
【问题描述】:

我正在使用新的 Github dataset 学习 BigQuery,但由于超出资源,我对提交数据集的查询一直失败。我将 SQL 精简为这段代码,但仍然失败:

SELECT
  commit,
  FIRST(repo_name) AS repo_name,
  FIRST(author.email) AS author_email,
  FIRST(author.time_sec) AS time,
  SUM(LENGTH(message)) AS len_commit_msg,
  COUNT(difference.new_path) AS num_files
FROM
  [bigquery-public-data:github_repos.commits]
GROUP BY
  commit
ORDER BY
  repo_name,
  time

有问题的数据集很大(150m 行),我想要的只是一个提交列表,其中包含有关它们的基本信息(提交消息的长度和更改文件的数量)。

这个例子有什么特别错误的地方吗?我尝试更改 SUM(LENGTH(message)) 部分和 COUNT() 无济于事。或者排序部分是大查询的禁忌?

我还检查了之前的“资源超出”问题,答案与我避免的 PARTITION、JOIN 或 GROUP EACH BY 问题有关。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    ORDER BY 很贵 - 尝试不使用它

    【讨论】:

    • 另外,如果只关心前N个有序结果,加上LIMIT N,查询就会成功。
    • Jordan 说什么 - 你可能不关心对 1.5 亿行进行排序,所以不要对整个结果集进行排序 - LIMIT 100。
    • 谢谢!确实 ORDER BY 是罪魁祸首。数据集似乎已经按这些变量排序,但由于 bigquery 的工作方式,这可能无法被利用。
    猜你喜欢
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多