代码之家  ›  专栏  ›  技术社区  ›  MichaelChirico

如何增加最大查询时间?

  •  1
  • MichaelChirico  · 技术社区  · 8 年前

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

    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万行中的1600万行!)。

    但我没有看到任何直接的选择 read_sql_query . params 看起来是个不错的候选人,但我看不出 jaydebeapi 记录正确参数的任何提示 execute 可能是。

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

    3 回复  |  直到 8 年前
        1
  •  2
  •   Sayat Satybald    7 年前

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

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

    SET SESSION query_max_execution_time=60m;
    
        2
  •  1
  •   khanigoo    6 年前

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

    SET SESSION query_max_execution_time='60m';
    

    这将更改为60分钟,请注意 仅有一个的 引用。

        3
  •  0
  •   Karthik    3 年前

    需要在查询之前将其添加为注释 --设置会话查询最大执行时间='60m'