这个查询很好,但如果我改变了获取数据的时间,我会得到以下错误(超过200,000行)。我不确定是问题的查询或填充/重新采样操作。我在集群中只有一台机器。
rsltES = session.execute( """SELECT * FROM tickdata.timeseries
WHERE
curve = 0
AND symbol = 1000
AND time > '2016-05-23T08:00:00-0400'
AND time < '2016-05-25T19:00:00-0400'
order by time
allow filtering;""")
dfes = dfes.set_index(['time'])
dfes.index.tz_localize('US/Eastern')
df_ohlcES = dfes.resample('5Min').ohlc()
df_ohlcES = df_ohlcES.ffill()
df_ohlcES['DateTime'] = np.arange(len(df_ohlcES))
# Move the DateTime Column to the Front
colsES = df_ohlcES.columns
colsES = colsES[-1:] | colsES[:-1]
df_ohlcES = df_ohlcES[colsES]
如果查询返回的数据太多,则查询超时。有没有办法增加超时?
Traceback (most recent call last):
File "pandascas.py", line 36, in <module>
allow filtering;""")
File "cassandra/cluster.py", line 1647, in cassandra.cluster.Session.execute (cassandra/cluster.c:28041)
File "cassandra/cluster.py", line 3243, in cassandra.cluster.ResponseFuture.result (cassandra/cluster.c:61954)
cassandra.ReadTimeout: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 1, 'consistency': 'LOCAL_ONE'}
答案 0 :(得分:1)
这是cassandra.yaml中设置的服务器端读取超时。这需要服务器设置并重新启动。
如果你的行太多,你也可以尝试缩小fetch_size以使请求的页面更小。
您可能还想知道您的工作负载是否经常被覆盖 - 这种情况会导致许多逻辑删除导致读取速度变慢。您可以做的一个实证检查是提高超时时间并打开tracing以查看花了这么长时间。
答案 1 :(得分:0)
数据库超时默认为2秒。您可以做的而不是增加此超时是使用fetchSize并以块的形式获取结果。请记住,允许过滤是一个糟糕的不良做法,它基本上是一个完整的表搜索命中集群中的所有节点,这可能会导致你超时,即使你没有查询数百万行。