如何从mapreduce中引用本地hdfs文件?

时间:2012-01-31 00:54:24

标签: java hadoop mapreduce hdfs

我想从我的mapreduce脚本中引用hadoop中hdfs集群上的文件。

是否可以在不使用完整路径(hdfs:// ip / path / to / file)的情况下执行此操作,而是使用本地/路径/到/文件引用?我正在使用java并试过类似的东西:

    File file = new File(stringPathToFile);

但这似乎引用了本地文件系统。

提前致谢!

1 个答案:

答案 0 :(得分:4)

您必须使用Hadoop API访问该文件。您可能正在寻找open。这将为您提供一个像通用打开文件一样的流。 File不知道如何处理HDFS中的文件。

我发现这个code example显示了如何执行此操作。


编辑:再次阅读您的问题后,我发现您正在从MapReduce作业中访问此问题。如果文件足够小(可以放在一台计算机的磁盘上),则应强烈考虑使用DistributedCache。这会将文件推送到运行作业的每个节点,以便可以快速访问它。使用多个映射器读取HDFS可能会导致工作中出现网络带宽瓶颈。