【发布时间】:2011-01-29 16:48:41
【问题描述】:
因为我们需要在非 Hadoop 中读取一堆文件到映射器
环境,我使用os.walk(dir) 和file=open(path, mode) 读入
每个文件。
但是,在 Hadoop 环境中,当我读到 HadoopStreaming 转换 文件输入到映射器的标准输入并将减速器的标准输出转换为文件 输出,我有几个关于如何输入文件的问题:
我们是否必须在 mapper.py 中设置来自 STDIN 的输入并让 HadoopStreaming将hdfs输入目录中的文件转换为STDIN?
如果我想分别读取每个文件并解析每一行,如何 我可以在 mapper.py 中设置文件的输入吗?
我之前针对非 Hadoop 环境设置的 Python 代码: 对于 os.walk('非 hdfs 的路径') 中的根目录、目录和文件 .....
但是,在 Hadoop 环境中,我需要将“非 hdfs 的路径”更改为
我从本地复制到的 HDFS 路径,但我尝试了很多没有
成功,比如os.walk('/user/hadoop/in')——这是我检查的
通过运行 bin/hadoop dfs -ls 和 os.walk('home/hadoop/files')--this
是我在非Hadoop环境下的本地路径,甚至是os.walk('hdfs://
host:fs_port/user/hadoop/in')....
谁能告诉我是否可以使用文件从文件中输入 mapper.py 中的操作还是我必须从 STDIN 输入?
谢谢。
【问题讨论】: