我需要从HDFS获取一些示例数据。
我正在使用:
hadoop fs -tail dev/sample.csv
它显示文件的最后一千字节到stdout。
有没有办法通过Java API使用hadoop fs -tail
?
还有其他方法可以从HDFS获取样本数据(随机)吗?
答案 0 :(得分:0)
您可以在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;
}
}