使用大型 *.bz2(维基百科转储)
Working with large *.bz2 (Wikipedia dump)
我需要从 06/2012-06/2016 获取关于 "Dollar" 和 "Euro" 的英文维基百科文章的 每日 页面浏览量。
原始转储 (*.bz2) 位于:
https://dumps.wikimedia.org/other/pagecounts-ez/merged/
例如,
https://dumps.wikimedia.org/other/pagecounts-ez/merged/pagecounts-2014-01-views-ge-5-totals.bz2 提供了 2014 年 1 月的 hourly/daily 数据。
问题:
解压后的文件太大,无法在任何文本编辑器中打开。
所需的解决方案:
Python 脚本 (?) 读取每个 .bz2 文件,仅搜索 en wikipedia "Dollar" / "Euro" 条目并将每日页面浏览量放入数据框中。
提示: 使用综合浏览量 API (https://wikitech.wikimedia.org/wiki/Pageviews_API) won't be helpful as I'll need consistent data before 2015. stats.grok data (http://stats.grok.se/) 都不是一种选择,因为生成的数据不同且不兼容。
可能最简单的解决方案是编写搜索脚本以从标准输入中逐行读取(sys.stdin
in Python;当然 a Stack Overflow question about that too) and then piping the output of bzcat
给它:
$ bzcat pagecounts-2014-01-views-ge-5-totals.bz2 | python my_search.py
只需确保您的 Python 代码确实以增量方式处理输入,而不是试图将整个输入一次缓冲到内存中。
这样,就无需使用任何 bzip2 特定代码使您的 Python 脚本本身复杂化。
(这也可能比尝试在 Python 中进行 bzip2 解码更快,因为 bzcat 进程可以 运行 与搜索脚本并行。)
我需要从 06/2012-06/2016 获取关于 "Dollar" 和 "Euro" 的英文维基百科文章的 每日 页面浏览量。
原始转储 (*.bz2) 位于: https://dumps.wikimedia.org/other/pagecounts-ez/merged/
例如, https://dumps.wikimedia.org/other/pagecounts-ez/merged/pagecounts-2014-01-views-ge-5-totals.bz2 提供了 2014 年 1 月的 hourly/daily 数据。
问题: 解压后的文件太大,无法在任何文本编辑器中打开。
所需的解决方案: Python 脚本 (?) 读取每个 .bz2 文件,仅搜索 en wikipedia "Dollar" / "Euro" 条目并将每日页面浏览量放入数据框中。
提示: 使用综合浏览量 API (https://wikitech.wikimedia.org/wiki/Pageviews_API) won't be helpful as I'll need consistent data before 2015. stats.grok data (http://stats.grok.se/) 都不是一种选择,因为生成的数据不同且不兼容。
可能最简单的解决方案是编写搜索脚本以从标准输入中逐行读取(sys.stdin
in Python;当然 a Stack Overflow question about that too) and then piping the output of bzcat
给它:
$ bzcat pagecounts-2014-01-views-ge-5-totals.bz2 | python my_search.py
只需确保您的 Python 代码确实以增量方式处理输入,而不是试图将整个输入一次缓冲到内存中。
这样,就无需使用任何 bzip2 特定代码使您的 Python 脚本本身复杂化。
(这也可能比尝试在 Python 中进行 bzip2 解码更快,因为 bzcat 进程可以 运行 与搜索脚本并行。)