Pythonic内存MapReduce。
项目描述
受Spotify的luigi框架启发的实验性Pythonic MapReduce。
截断输出
目前有两个MapReduce实现,一个包括排序,另一个不包括。以下示例将不会从排序中受益,因此我们可以利用不排序的固有优化。API是相同的,但tinymr.memory.MRSerial()在分区后和reducer()与final_reducer()之间再次进行排序。
import json
import re
import sys
from tinymr.memory import MRSerial
class WordCount(MRSerial):
def __init__(self):
self.pattern = re.compile('[\W_]+')
def mapper(self, item):
for word in item.split():
word = self.pattern.sub('', word)
if word:
yield word.lower(), 1
def reducer(self, key, values):
yield key, sum(values)
def final_reducer(self, pairs):
return {k: tuple(v)[0] for k, v in pairs}
wc = WordCount()
with open('LICENSE.txt') as f:
out = wc(f)
print(json.dumps(out, indent=4, sort_keys=True))
截断输出
{
"a": 1,
"above": 2,
"advised": 1,
"all": 1,
"and": 8,
"andor": 1
}
开发中
$ git clone https://github.com/geowurster/tinymr.git
$ cd tinymr
$ pip install -e .\[dev\]
$ py.test tests --cov tinymr --cov-report term-missing
许可
见LICENSE.txt
变更日志
见CHANGES.md
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码发行版
tinymr-0.1.tar.gz (16.8 kB 查看散列值)
构建发行版
tinymr-0.1-py2.py3-none-any.whl (15.1 kB 查看散列值)
关闭
tinymr-0.1.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | bba34762221bcf14696679b11f81810bd5a09258c1a9eec4a1c63cfbc11fe980 |
|
MD5 | 4e554c14e854da308529f9e201150fd7 |
|
BLAKE2b-256 | d83cadbb7418a860a1202b7bb8f1dfc296ff43b622512a330ca8919e5edd1b87 |
关闭
tinymr-0.1-py2.py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 093f2359d19a279a1ba88fae77b3af25650245f30ec7c027a99e733e95d1bff9 |
|
MD5 | 6c47547eecc5f6b3093da2da127b15a4 |
|
BLAKE2b-256 | 0b3a2b8c208985c7e8ee3be96a880b1757076c35bb67d98ae2a9a52948a1e709 |