如何增加最大查询时间



我运行了一个查询,最终将以 500,000 个块返回大约 17M 行。一切似乎都很好,但我遇到了以下错误:

Traceback (most recent call last):
File "sql_csv.py", line 22, in <module>
    for chunk in  pd.read_sql_query(hours_query, db.conn, chunksize = 500000):
File "/Users/michael.chirico/anaconda2/lib/python2.7/site-packages/pandas/io/sql.py", line 1424, in _query_iterator
    data = cursor.fetchmany(chunksize)
File "/Users/michael.chirico/anaconda2/lib/python2.7/site-packages/jaydebeapi/__init__.py", line 546, in fetchmany
    row = self.fetchone()
File "/Users/michael.chirico/anaconda2/lib/python2.7/site-packages/jaydebeapi/__init__.py", line 526, in fetchone
    if not self._rs.next(): jpype._jexception.SQLExceptionPyRaisable: java.sql.SQLException: Query failed (#20171013_015410_01255_8pff8):
**Query exceeded maximum time limit of 60.00m**

显然,这样的查询可能需要一些时间;我对此很好(分块意味着我知道我不会破坏任何 RAM 限制——事实上,我正在运行的文件输出显示查询在崩溃之前完成了 16M 行中的 17M!

但我没有看到任何直接的选择read_sql_query. params似乎是一个不错的候选人,但我在jaydebeapi文档中看不到任何提示,说明给execute的正确参数可能是什么。

如何克服此问题并运行完整查询?

执行查询时,Presto 会通过 CPU、内存、执行时间和其他约束来限制每个查询。您达到了执行时间限制。请确保您的查询是合理的,否则可能会导致集群崩溃。

要增加查询执行时间,请在会话变量中定义一个新值。

SET SESSION query_max_execution_time=60m;

要覆盖最大查询执行时间,请在 CLI 中添加此参数:

SET SESSION query_max_execution_time='60m';

这会将其更改为 60 分钟,请注意引号。

需要在查询之前将其添加为注释--设置会话 query_max_execution_time='60m'

相关内容

  • 没有找到相关文章

最新更新