如何增加最大查询时间?

2024-10-02 18:17:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行了一个查询,最终将返回大约1700万行,每行500000个。一切似乎都很顺利,但我遇到了以下错误:

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限制——事实上,我运行的文件输出显示,在崩溃之前,查询完成了1700万行中的16M行!)。在

但我看不到read_sql_query的任何直接选项。params似乎是一个不错的候选者,但是我在jaydebeapi文档中看不到任何关于给execute的正确参数的任何提示。在

如何克服这个问题并运行完整的查询?在


Tags: inpyreadsqllibpackageslinesite
2条回答

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

要增加查询执行时间,请在session variables中定义一个新值。在

SET SESSION query_max_execution_time=60m;

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

SET SESSION query_max_execution_time='60m';

这将更改为60分钟,请注意单引号。在

相关问题 更多 >