我有一个简单的查询运行:
update`dataset.mytable` set field_1 = cast( field_2 as int64) where field_2 not in ('AA', 'BB')
我收到了错误:
错误:查询执行期间超出资源:无法在分配的内存中执行查询 .
该表只有10亿行......
这真的是一个错误,类似于this report . 在这种情况下,您无法知道,但如果您确实在将来发现了一个错误,那么您可以submit it to the issue tracker,因为更广泛的StackOverflow社区可能无法提供帮助 .
作为发生的事情的总结:
看起来加载到表中的文件非常大,例如每个大小为千兆字节 . 加载较小的文件不会触发BigQuery错误 .
当将这些文件的内容持久化到BigQuery存储时,BigQuery没有对表进行充分的分析(这是BigQuery方面的错误) .
执行 UPDATE 语句时,BigQuery尝试仅在少量分区上执行大量工作,从而产生 Resources exceeded 消息 .
UPDATE
Resources exceeded
我能够通过手动指示BigQuery存储重新解析您的表来解决问题 . 除非有错误,否则这是不必要的 .
1 回答
这真的是一个错误,类似于this report . 在这种情况下,您无法知道,但如果您确实在将来发现了一个错误,那么您可以submit it to the issue tracker,因为更广泛的StackOverflow社区可能无法提供帮助 .
作为发生的事情的总结:
看起来加载到表中的文件非常大,例如每个大小为千兆字节 . 加载较小的文件不会触发BigQuery错误 .
当将这些文件的内容持久化到BigQuery存储时,BigQuery没有对表进行充分的分析(这是BigQuery方面的错误) .
执行
UPDATE
语句时,BigQuery尝试仅在少量分区上执行大量工作,从而产生Resources exceeded
消息 .我能够通过手动指示BigQuery存储重新解析您的表来解决问题 . 除非有错误,否则这是不必要的 .