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

Posted

技术标签:

【中文标题】如何使用 Pandas 从 InfluxDB 检索超过 10k 行?【英文标题】:How to retrive more than 10k lines from InfluxDB using Pandas? 【发布时间】:2017-07-25 00:49:43 【问题描述】:

我正在尝试使用 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

这个问题似乎与记录在 here 的 InfluxDB 的内部限制有关(即 max-row-limit 配置选项)。我正在通过sources 尝试找出如何获得大于 10k 行的 DataFrame,但对于解决此问题的任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

问题是由DataFrameClientquery 简单地忽略了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 更改为无限制。

【讨论】:

我刚刚发送了一个pull request 来修复DataFrameClient 对分块请求的处理。【参考方案2】:

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

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

【讨论】:

以上是关于如何使用 Pandas 从 InfluxDB 检索超过 10k 行?的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:如何从给定(行,列)对列表的 DataFrame 中检索值?

如何从 python pandas 中的另一个数据框中检索数据? [复制]

将带有标签的 pandas DF 写入 influxdb

从 Pandas HDF5 商店检索日期范围

如何使用分层索引保存和检索 Pandas 数据帧?

如何使用 Python 从 .aspx 页面检索数据?