需要使用python-MapReduce计算特定目录中的文档数
请找到我正在使用的以下程序。它正在编译,但没有给出任何输出。请求帮助解决错误需要使用python-MapReduce计算特定目录中的文档数,python,python-3.x,mapreduce,mrjob,Python,Python 3.x,Mapreduce,Mrjob,请找到我正在使用的以下程序。它正在编译,但没有给出任何输出。请求帮助解决错误 import gzip import warc import os from mrjob.job import MRJob class DocumentCounter(MRJob): def mapper(self, _, line): entries = os.listdir("C://Users//HP//WARCDataset") for entry in entrie
import gzip
import warc
import os
from mrjob.job import MRJob
class DocumentCounter(MRJob):
def mapper(self, _, line):
entries = os.listdir("C://Users//HP//WARCDataset")
for entry in entries:
yield 1,1
def reducer(self, key, values):
yield key, sum(values)
if __name__ == '__main__':
DocumentCounter.run()
IDE和输出窗口的屏幕截图。即使程序运行成功,结果也不会显示
class DocumentCounter(MRJob):
def mapper_raw(self,_,line):
for fname in os.listdir(WARC_PATH):
yield "total_documents",1
def combiner(self, key, values):
"""
Sums up count for each mapper.
"""
yield key, sum(values)
def reducer(self, key, values):
##TOTAL_DOUCMENTS = sum(values)
NumberofDocuments = sum(values)
yield key, NumberofDocuments
if __name__ == '__main__':
DocumentCounter.run()
上面的代码使用os.listdir函数迭代给定路径上的所有文件我不确定代码有什么问题,但您真的需要一个类来计算文档数吗?您可以通过:
b=len([x代表os.listdir(文件夹)中的x,如果x.endswith(文件扩展名)])
@pavel:正如您所说,可以使用Python内部函数来实现,但她想使用MapReduce算法,所以她需要一个类。@NachiketDeo:您的代码似乎是正确的。你能展示一下你是如何从终端运行代码的吗?@codrelphi谢谢你的评论。我通过按下“Run”按钮在Enthound-CorporationIDE的本地机器上运行代码。我没有使用任何命令来运行该文件。请告诉我是否有任何命令可用于运行。@NachiketDeo您的输出应位于作业输出所在行或最终输出所在行旁边的文件夹中。您可以检查这些文件夹。这是您问题的解决方案还是应该是问题的一部分?最近在我看来,这是解决问题的办法。当给定目录正确路径时,此代码提供对该特定目录中文档数量的回答