我正在使用python API(pydoop)来映射缩小的HDFS文件,但我想知道如何使用pydoop或其他任何使用python的技术来检索原始数据。
答案 0 :(得分:0)
MapReduce应用程序(通过Pydoop或通过标准Hadoop Java API运行)将其输出写入用户指定的目录中,为每个reduce任务创建一个文件(在仅地图作业的特殊情况下,为每个map任务创建一个文件) ):part-r-00000
,part-r-00001
等。您可以使用Pydoop的HDFS API查找这些文件并读取其内容:
import pydoop.hdfs as hdfs
MR_OUT_DIR = "hdfs://localhost:9000/user/foo/mr_output"
data = []
for path in hdfs.ls(MR_OUT_DIR):
if hdfs.path.basename(path).startswith("part-"):
with hdfs.open(path) as f:
data.append(f.read())