FileInputStream для универсальной файловой системы

У меня есть файл, который содержит сериализованные объекты Java как "Вектор". Я хранил этот файл по Распределенной файловой системе Hadoop (HDFS). Теперь я намереваюсь считать этот файл (использующий метод readObject) в одной из задачи карты. Я предполагаю

FileInputStream in = new FileInputStream("hdfs/path/to/file");

привычка' работа как файл хранится по HDFS. Таким образом, я думал об использовании org.apache.hadoop.fs. Класс FileSystem. Но К сожалению это не имеет никакого метода, который возвращает FileInputStream. Все, что это имеет, является методом, который возвращает FSDataInputStream, но я хочу inputstream, который может считать сериализированные объекты Java как вектор из файла, а не просто примитивных типов данных, которые сделал бы FSDataInputStream.

Помогите!

8
задан skaffman 15 May 2010 в 13:06
поделиться

1 ответ

FileInputStream не позволяет легко читать сериализованные объекты напрямую. Вам нужно обернуть его в ObjectInputStream . Вы можете сделать то же самое с FSDataInputStream , просто оберните его в ObjectInputStream , а затем вы сможете читать из него свои объекты.

Другими словами, если у вас есть файловая система типа org.apache.hadoop.fs.FileSystem , просто используйте:

ObjectInputStream in = new ObjectInputStream(fileSystem.open(path));
6
ответ дан 6 December 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: