查询失败并出现错误 RESOURCE_EXHAUSTED (ORDER BY without ORDER BY)

Posted

技术标签:

【中文标题】查询失败并出现错误 RESOURCE_EXHAUSTED (ORDER BY without ORDER BY)【英文标题】:Query failed with error RESOURCE_EXHAUSTED (ORDER BY without ORDER BY ) 【发布时间】:2019-06-12 15:17:17 【问题描述】:

我有一个下面表格的查询,在一个大表(~60GB)上运行。我认为 WITH OFFSET 是某种 ORDER BY 在引擎盖下?欢迎任何关于如何解决这个问题的想法。

我收到以下错误: 作业 xxx 因错误 RESOURCE_EXHAUSTED 失败:查询执行期间超出资源:无法在分配的内存中执行查询。峰值使用量:限制的 112%。最高内存消费者:ORDER BY 操作:98% 其他/未归因:2%;工作ID:xxx

WITH
  test_data AS (
  SELECT
    CAST(CURRENT_TIMESTAMP() as DATETIME) datetime,
    'xyz' AS grp,
    '["7f9f98fh9g4ef393d3h5", "chg3g33f26949hg6067d", "g477e5973ec04g7c3232", "0de1ec83304d761he786", "3c1h1f153530g90g35c2", "946637g145h48322686f"]' AS ids
  UNION ALL
  SELECT
    CAST(CURRENT_TIMESTAMP() as DATETIME) datetime,
    'abc' AS grp,
    '["7f9f98fh9g4ef393d3h5", "chg3g33fdsfsdfs49hg6067d", "g477e5973ec04g7c3232", "0de1ec83304d761he786", "3c1h1f153530g90g35c2", "946637g145h48322686f"]' AS ids ),

  as_list AS (
    SELECT
      datetime,
      grp,
      id,
      pos
    FROM
     test_data, UNNEST(SPLIT(REGEXP_REPLACE(JSON_EXTRACT(ids,'$'), r'[\[\]\"]', ''), ',')) AS id WITH OFFSET AS pos)

SELECT
  *
FROM
  as_list
ORDER BY
  grp, datetime

【问题讨论】:

示例查询运行良好。您是否有任何实际失败的示例查询?问题中缺少一些东西:为什么需要使用 WITH OFFSET? @FelipeHoffa 我确实需要 with offset 来获取相关元素的位置。上述查询只是一个示例,实际查询运行在更大的数据集(60GB)上。 @F***Bosler - 是在行数方面还是在单个行的大小方面更大? @MikhailBerlyant 就行数而言,几百万行。没有太多的列(40 左右)。这能回答你的问题吗? 实际上我认为我在这里搞砸了,并在查询的最后忽略了一个 ORDER BY。道歉。 【参考方案1】:

要解决这个问题,只需删除 ORDER BY 或添加 LIMIT

【讨论】:

以上是关于查询失败并出现错误 RESOURCE_EXHAUSTED (ORDER BY without ORDER BY)的主要内容,如果未能解决你的问题,请参考以下文章

impala-shell 查询失败并出现错误 (13)

导入数据存储备份时,大查询加载失败并出现错误字符 (ASCII 0)

查询失败并出现错误 RESOURCE_EXHAUSTED (ORDER BY without ORDER BY)

Apollo 查询失败并出现错误 - TypeError: this.props.getPostInfo is not a function

WMI 脚本失败并出现错误 0x80041017

带有联合的MYSQl查询失败