2013-08-04 3 views
1

Есть ли способ получить последние измененные времена всех файлов и файлов в hdfs? Я хочу создать страницу, которая отображает информацию, но я не знаю, как перейти к тому, чтобы получить последние версии мод в одном .txt-файле.Hadoop dir/file last modified times

ответ

1

Смотрите, если это помогает:

public class HdfsDemo { 

    public static void main(String[] args) throws IOException { 

     Configuration conf = new Configuration(); 
     conf.addResource(new Path("/Users/miqbal1/hadoop-eco/hadoop-1.1.2/conf/core-site.xml")); 
     conf.addResource(new Path("/Users/miqbal1/hadoop-eco/hadoop-1.1.2/conf/hdfs-site.xml")); 
     FileSystem fs = FileSystem.get(conf); 
     System.out.println("Enter the directory name : "); 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     Path path = new Path(br.readLine()); 
     displayDirectoryContents(fs, path); 
     fs.close(); 
    } 

    private static void displayDirectoryContents(FileSystem fs, Path rootDir) { 
     // TODO Auto-generated method stub 
     try { 

      FileStatus[] status = fs.listStatus(rootDir); 
      for (FileStatus file : status) { 
       if (file.isDir()) { 
        System.out.println("DIRECTORY : " + file.getPath() + " - Last modification time : " + file.getModificationTime()); 
        displayDirectoryContents(fs, file.getPath()); 
       } else { 
        System.out.println("FILE : " + file.getPath() + " - Last modification time : " + file.getModificationTime()); 
       } 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Одна вещь, чтобы заметить, однако, getModificationTime() возвращает время модификации файла в миллисекундах с 1 января 1970 UTC.

1

Вам, вероятно, придется проходить через файлы и каталоги, чтобы получить статус каждого пути - вы можете использовать приведенный ниже код (только образец), но я не уверен, насколько он эффективен, если у вас есть большой набор файлов и каталогов.

Configuration conf = new Configuration(); 
conf.set("fs.default.name", "hdfs://<namenod_ip_address:<port>"); 
conf.set("mapred.job.tracker", "<jobtracker_ip_address>:<port>"); 
conf.setBoolean("fs.hdfs.impl.disable.cache", true); 

FileSystem lfs = FileSystem.get(l_configuration); 
fs.getFileStatus(new Path("/your/path")).getModificationTime(); 
Смежные вопросы