我想存储一些从HDFS处理的文件的信息。在 Java 程序中读取存储在 HDFS 中的文件的文件位置和字节偏移量的最合适方法是什么?
是否有一个唯一的文件ID与Hadoop 1中存储的每个文件相关联的概念?如果是,那么如何在MapReduce程序中获取它?
根据我的理解,
您可以使用org.apache.hadoop.fs.FileSystem
类满足您的所有需求。
1.您可以获取每个文件与其 URI 唯一标识,也可以使用getFileChecksum(Path path)
2.您可以使用getFileBlockLocations(FileStatus file,long start,long len)
获取所有文件的所有块位置 TextInputFormat
为文件中的键起始位置提供字节偏移量,这与 HDFS 上的文件偏移量不同。
您可以使用org.apache.hadoop.fs.FileSystem
类来满足您的所有需求。还有许多其他方法可用。请仔细阅读以更好地理解。
希望对您有所帮助。
根据"Hadoop权威指南",输入格式TextInputFormat为键提供了字节偏移量的值。
对于文件名,您可以查看以下内容:
Hadoop 中的映射器输入键值对
如何从 R 中的流式 mapReduce 作业中获取文件名?