У меня есть файл, который содержит сериализованные объекты Java как "Вектор". Я хранил этот файл по Распределенной файловой системе Hadoop (HDFS). Теперь я намереваюсь считать этот файл (использующий метод readObject) в одной из задачи карты. Я предполагаю
FileInputStream in = new FileInputStream("hdfs/path/to/file");
привычка' работа как файл хранится по HDFS. Таким образом, я думал об использовании org.apache.hadoop.fs. Класс FileSystem. Но К сожалению это не имеет никакого метода, который возвращает FileInputStream. Все, что это имеет, является методом, который возвращает FSDataInputStream, но я хочу inputstream, который может считать сериализированные объекты Java как вектор из файла, а не просто примитивных типов данных, которые сделал бы FSDataInputStream.
Помогите!
FileInputStream не позволяет легко читать сериализованные объекты напрямую. Вам нужно обернуть его в ObjectInputStream . Вы можете сделать то же самое с FSDataInputStream , просто оберните его в ObjectInputStream , а затем вы сможете читать из него свои объекты.
Другими словами, если у вас есть файловая система
типа org.apache.hadoop.fs.FileSystem
, просто используйте:
ObjectInputStream in = new ObjectInputStream(fileSystem.open(path));