我正在尝试使用Dumbo / Hadoop为一堆小文本计算TF-IDF
使用此示例的文件http://dumbotics.com/2009/05/17/tf-idf-revisited/

为了提高效率,我将文本文件打包为一个序列
使用Stuart Sierra工具的文件-http://stuartsierra.com/2008/04/24/a-million-little-files

序列文件使用我的原始文件名(324324.txt [
object_id.txt])作为键,文件内容作为值。

问题是输出的每一行看起来像:

[aftershocks, s3://mybucket/input/test-seq-file]        7.606329176204189E-4

我想要的是:
[aftershocks, 324324.txt]       7.606329176204189E-4

我究竟做错了什么?

我正在执行以下任务:
dumbo start tfidf.py -hadoop /home/hadoop -input s3://mybucket/input/

测试序列文件-输出s3:// mybucket / output / test3-参数doccount = 11-
输出格式文本

最佳答案

我对第一个映射器进行了以下调整,一切开始正常工作。

#Original version
@opt("addpath", "yes")
def mapper1(key, value):
    for word in value.split():
        yield (key[0], word), 1

#Edits version
def mapper1(key, value):
    for word in value.split():
        yield (key, word), 1

关于python - 序列文件名在Hadoop输出中用作键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3151811/

10-10 13:56
查看更多