我需要从HDFS获取一些示例数据。

我在用 :

hadoop fs -tail dev/sample.csv

它显示要输出的文件的最后千字节。

  • 是否可以通过Java API使用hadoop fs -tail
  • 还有其他方法可以从HDFS中获取样本数据(随机)吗?
  • 最佳答案

    您可以在aws repo中找到一些数据集

    org.apache.hadoop.fs.FsShell.tail(String[], int)中,您可以使用hdfs dfs -tail,例如:

    long fileSize = srcFs.getFileStatus(path).getLen();
    long offset = (fileSize > 1024) ? fileSize - 1024: 0;
    
    while (true) {
      FSDataInputStream in = srcFs.open(path);
      in.seek(offset);
      IOUtils.copyBytes(in, System.out, 1024, false);
      offset = in.getPos();
      in.close();
      if (!foption) {
        break;
      }
      fileSize = srcFs.getFileStatus(path).getLen();
      offset = (fileSize > offset) ? offset: fileSize;
      try {
        Thread.sleep(5000);
      } catch (InterruptedException e) {
        break;
      }
    }
    

    10-04 22:21