簡體   English   中英

來自HDFS集群的ListFiles

[英]ListFiles from HDFS Cluster

我是hadoop和東西的業余愛好者。 現在,我正在嘗試訪問hadoop集群(HDFS)並從客戶端eclipse中檢索文件列表。 在hadoop java客戶端上設置所需的配置后,我可以執行以下操作。

我可以執行copyFromLocalFilecopyToLocalFile操作從客戶端訪問HDFS。 這就是我所面對的。 當我給出listFiles()方法時,我得到了

org.apache.hadoop.fs.LocatedFileStatus@d0085360
org.apache.hadoop.fs.LocatedFileStatus@b7aa29bf

MainMethod

Properties props = new Properties();
props.setProperty("fs.defaultFS", "hdfs://<IPOFCLUSTER>:8020");
props.setProperty("mapreduce.jobtracker.address", "<IPOFCLUSTER>:8032");
props.setProperty("yarn.resourcemanager.address", "<IPOFCLUSTER>:8032");
props.setProperty("mapreduce.framework.name", "yarn");
FileSystem fs = FileSystem.get(toConfiguration(props)); // Setting up the required configurations
Path p4 = new Path("/user/myusername/inputjson1/");
RemoteIterator<LocatedFileStatus> ritr = fs.listFiles(p4, true);
while(ritr.hasNext())
        {
            System.out.println(ritr.next().toString());
        }

我也嘗試過FileContext,最后只得到filestatus對象字符串或其他東西。 當我迭代到遠程hdfs目錄時是否有可能獲取文件名,有一個名為getPath()的方法,這是我們使用hadoop API檢索文件名的完整路徑的唯一方法,還是有任何其他方法這樣我只能檢索指定目錄路徑中文件的名稱,請幫我解決這個問題,謝謝。

你確實可以使用getPath()這將返回一個Path對象,它允許你查詢文件的名稱。

Path p = ritr.next().getPath();
// returns the filename or directory name if directory
String name = p.getName();    

您獲得的FileStatus對象可以告訴您這是文件還是目錄。

這是更多的API文檔:

http://hadoop.apache.org/common/docs/r1.0.0/api/org/apache/hadoop/fs/Path.html

http://hadoop.apache.org/common/docs/r1.0.0/api/org/apache/hadoop/fs/FileStatus.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM