我编写了一个应用程序,列出了hdfs中的所有文件,然后对它们进行一些处理。这是我的代码中列出hdfs中所有文件的部分:
Configuration configuration = new Configuration();
FileSystem hdfs;
hdfs = FileSystem.get(new URI(url), configuration);
RemoteIterator<LocatedFileStatus> it = hdfs.listFiles(new Path(url+directory), true);
我想对maprfs做同样的事情。作为第一次尝试,我尝试使用hadoop的jar,但没有成功。然后我试着用mapr附带的jar( /opt/mapr/hadoop/hadoop-0.20.2/lib/hadoop-0.20.2-dev-core.jar
)但是这个jar中的对象文件系统似乎没有一个名为 listFiles
. 你知道有没有我可以用的等效方法吗?有没有只使用hadoopjar的方法?谢谢你的回答。
1条答案
按热度按时间kx1ctssn1#
您的代码对于mapr来说“几乎”是完美的,并且您的依赖关系也很好。
正如您可能知道的那样,mapr没有使用/拥有namenodes的概念,这有很多很好的理由。这意味着连接到集群的方式不同。您不需要将集群url路径设置到配置或路径中。
以下代码将起作用:
mapr知道如何根据数据库中的信息进行连接
/opt/mapr/conf/mapr-clusters.conf
. 此文件指示集群的名称和cldb节点列表。正如您所看到的,您所编写的“hadoop代码”是正确的和有效的。