2015-11-30 29 views
0

我需要从mixpanel中提取数据,目前我执行数据的“原始输出”。原始出口是通过压缩而来的jsonl。按行逐行解析已读取对象的方法

我的问题是,我必须(根据API)整个压缩文件(.read())在读,有一次我对其进行解码(.decode('utf-8')),它使用多我的机器内存。

我想知道是否有办法逐行解析读取的文件对象,以便我可以逐行解码?制作转换解决方案一直是减少我一次拉入的数据并迭代拉。

+0

您可以使用'readline()'而不是'read()'来获取逐行数据 –

+0

主要问题是您正在以gzip格式读取内容;只有在完全下载时才能正确读取它(否则您将损坏数据)。为了解决读取块中的json的其他问题,请尝试使用['ijson'](https://pypi.python.org/pypi/ijson),它是一个迭代的json解释器。 –

+0

下载到磁盘,在磁盘上解压缩,然后逐行阅读/使用迭代JSON解析器? – deceze

回答

0

为了解决这个问题。我接触到了Mixpanel工程团队,最简单的答案是进行增量拉,解压缩到磁盘,然后根据需要进行处理。