我想从我的mapreduce脚本中引用hadoop中hdfs集群上的文件。
是否可以在不使用完整路径(hdfs:// ip / path / to / file)的情况下执行此操作,而是使用本地/路径/到/文件引用?我正在使用java并试过类似的东西:
File file = new File(stringPathToFile);
但这似乎引用了本地文件系统。
提前致谢!
答案 0 :(得分:4)
您必须使用Hadoop API访问该文件。您可能正在寻找open。这将为您提供一个像通用打开文件一样的流。 File
不知道如何处理HDFS中的文件。
我发现这个code example显示了如何执行此操作。
编辑:再次阅读您的问题后,我发现您正在从MapReduce作业中访问此问题。如果文件足够小(可以放在一台计算机的磁盘上),则应强烈考虑使用DistributedCache。这会将文件推送到运行作业的每个节点,以便可以快速访问它。使用多个映射器读取HDFS可能会导致工作中出现网络带宽瓶颈。