由于我们需要在一堆文件中读取到映射器,在非Hadoop的 环境中,我使用os.walk(dir)
和file=open(path, mode)
来读取 中的每个文件。STDIN或文件作为Hadoop环境中的映射器输入?
然而,在Hadoop的环境,因为我读了HadoopStreaming转换 文件输入到减速机的映射,与CONVER标准输出的标准输入到文件 输出,我有几个问题如何输入文件:
我们是否必须在mapper.py中设置STDIN的输入,并让 HadoopStreaming将hdfs输入目录中的文件转换为STDIN?
如果我想单独读取每个文件并解析每一行,如何在mapper.py中设置输入文件的输入方式 ?
我非Hadoop的环境套以前的Python代码: 根目录,文件在os.walk文件( '非HDFS的路径') .....
然而,在Hadoop环境中,我需要将'非hdfs的路径'更改为 HDFS的路径,其中我copyFromLocal为,但我尝试了许多没有 的成功,例如os.walk('/user/hadoop/in')
- 这是我通过运行bin/hadoop dfs -ls,和os.walk('home/hadoop/files')
- 这个 是我在非Hadoop环境下的本地路径,甚至是os.walk('hdfs:// host:fs_port/user/hadoop/in')
.. ..
任何人都可以告诉我,我是否可以通过在mapper.py中使用文件 操作从文件输入或我必须从STDIN输入?
谢谢。
嗨@JD Long,我在hdfs目录中有很多csv文件,我想从目录中读取所有csv文件,你能建议我该怎么做。我很困惑该怎么做。正如我在本地从目录读取csv文件的脚本测试。如果我在服务器上运行它,它会在输入流上工作,所以我读取文件时发生异常(流式传输命令失败)。我是新的python for hadoop,所以我不知道该怎么做。请建议我该怎么做 – MegaBytes
你试过了什么?看看这个,然后尝试破解一些东西。如果遇到困难,请将其形成StackOverflow问题。然后重复这个过程:http://blog.cloudera.com/blog/2013/01/a-guide-to-python-frameworks-for-hadoop/ –