精通日志查询: 如何翻页获取日志和计算结果

精通日志查询: 如何翻页获取日志和计算结果

日志服务提供一站式的日志采集、存储、查询、计算功能。交互式的日志采集体验,释放用户的运维压力,解放用户的双手; 交互式的查询分析体验,让用户自由的构建数据模型、探索式分析挖掘数据深层。python

clipboard.png

用户使用日志服务的查询分析能力,不只能够在控制台交互式查询,也能够使用SDK,在程序中使用查询分析。 当计算结果比较大时,怎么把全量结果读取到本地,是一个比较比较头疼的问题。幸亏,日志服务提供了翻页的功能,不只能够翻页读取原始日志内容,也能够把SQL的计算结果翻页读取到本地。开发者能够经过日志服务提供的SDK,或者Cli,经过读数据接口翻页读取日志。api

查询和分析使用不一样的分页方式

clipboard.png

日志服务提供一个统一的查询日志入口:GetLogstoreLogs,既能够根据关键字查询日志原始内容,也能够提交SQL计算,获取计算结果。网络

• 使用关键字查询,获取原始内容,能够经过API中的offset和lines参数来翻页获取全部内容。运维

• 使用SQL计算,获取SQL的计算结果,使用SQL的limit语法来达到翻页的目的。spa

查询翻页使用案例

在GetLogStoreLogs api中,包含offset和lines两个参数3d

• offset : 用于指定从第一行开始读取日志日志

• lines : 用于指定当前的请求读取多少行,该参数最大100行,若是设置该参数大于100行,则仍然返回100行。blog

在翻页读取时,不停的增大offset,知道读取到某个offset后,获取的结果行数为0,而且结果的progress为complete状态,则认为读取到了所有数据,能够结束了。接口

翻页代码样例

翻页的伪代码:ip

clipboard.png

python 翻页读取样例

更详细案例参考文档:

clipboard.png

Java 翻页读取样例

更详细的案例参考文档

clipboard.png

SQL分析结果翻页读取

在SQL分析中,GetLogStoreLogs API 参数中的offset 和lines是无效的,填写。也就是说,若是按照上文翻页读取原始内容的方式,遍历offset翻页,那么每次SQL执行的结果都是同样的。理论上,咱们能够在一次调用中,获取所有的计算结果,可是若是结果集太大,可能会产生如下问题:

• 网络上传输大量数据延时比较高。

• 客户端的内存要保存大量的结果,供进一步处理。

为了解决SQL翻页的问题,咱们提供了标准SQL的limit翻页语法

clipboard.png

Offset表示从第几行开始读取结果

• Line表示读取多少行,Line没有大小限制;可是若是一次读取太多,会影响网络延时和客户端的处理。

• 一个典型案例,假如如下SQL共产生2000条日志

clipboard.png

那么能够翻页,每次读取500行,共4次读取完成:

clipboard.png

SQL翻页样例

在程序中,SQL翻页的伪代码这样写:

clipboard.png

Python程序样例:

clipboard.png

Java程序样例:

clipboard.png

本文做者:云雷

阅读原文

本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索