如何使用Pandas从InfluxDB中检索超过10k行?

时间:2017-03-05 02:30:22

标签: python pandas influxdb influxdb-python

我正在尝试使用InfluxDB的Python客户端来检索存储在InfluxDB上的数据,但不能超过10k行。我(不成功)跟随的示例是here。总结:

import influxdb
dfclient = influxdb.DataFrameClient('localhost', 8086, 'root', 'root', 'mydb')
q = "select * from some_measurement"
df = dfclient.query(q, chunked=True)  # Returns only 10k points

这个问题似乎与InfluxDB的内部限制有关here(即max-row-limit配置选项)。我正在通过sources试图找出如何获得大于10k行的DataFrame,但是对于解决这个问题的任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:4)

问题是由DataFrameClient query忽略chunked参数[code]引起的。

我发现的解决方法不是使用标准InfluxDBClient。问题中显示的代码变为:

import influxdb
client = influxdb.InfluxDBClient('localhost', 8086, 'root', 'root', 'btc')
q = "select * from some_measurement"
df = pd.DataFrame(client.query(q, chunked=True, chunk_size=10000).get_points())  # Returns all points

值得强调的是,从v1.2.2开始,max-row-limit设置(即上述代码中chunk_size的默认值)已从10k更改为无限制。

答案 1 :(得分:2)

您是否尝试在查询中设置chunked标志以便以块的形式接收数据。这可以使用如下查询来完成:

influxdb.DataFrameClient(host=’localhost’, port=8086, username=’root’, password=’root’, database=None, ssl=False, verify_ssl=False, timeout=None, use_udp=False, udp_port=4444, proxies=None)

您可以在第1.2.3节

中详细了解here