Генерация SequenceFile - PullRequest
       5

Генерация SequenceFile

3 голосов
/ 15 августа 2011

Учитывая данные в следующем формате (tag_uri image_uri image_uri image_uri ...), мне нужно превратить их в формат Hadoop SequenceFile для дальнейшей обработки Mahout (например, кластеризация)

http://flickr.com/photos/tags/100commentgroup http://flickr.com/photos/34254318@N06/4019040356 http://flickr.com/photos/46857830@N03/5651576112
http://flickr.com/photos/tags/100faves http://flickr.com/photos/21207178@N07/5441742937
...

До этого я хотел быпревратить ввод в csv (или arff) следующим образом

http://flickr.com/photos/tags/100commentgroup,http://flickr.com/photos/tags/100faves,...
0,1,...
1,1,...
...

с каждой строкой, описывающей один тег.Затем файл arff преобразуется в векторный файл, используемый mahout для дальнейшей обработки.Я пытаюсь пропустить часть генерации arff и создать вместо него sequenceFile.Если я не ошибаюсь, чтобы представить мои данные как sequenceFile, мне нужно было бы сохранить каждую строку данных с ключом $ tag_uri, а в качестве значения - $ image_vector.Как правильно сделать это (если возможно, могу ли я иметь tag_url для каждой строки, которая будет где-то включена в файл sequence)?

Некоторые ссылки, которые я нашел, но не уверен, что они актуальны:

  1. Запись файла SequenceFile
  2. Форматирование входной матрицы для факторизации матрицы SVD (могу ли я сохранить свою матрицу в этом виде?)
  3. RandomAccessSparseVector (учитывая, что я перечисляю только изображения, которым назначен данный тег, а не все изображения в строке, можно ли представить его с помощью этого вектора?)
  4. Запись SequenceFile
  5. Объяснение SequenceFile

1 Ответ

5 голосов
/ 15 августа 2011

Вам просто нужно SequenceFile.Writer, что объясняется в вашей ссылке # 4.Это позволяет записывать пары ключ-значение в файл.Что ключ и значение, конечно, зависит от вашего варианта использования.Это совсем не то же самое для кластеризации, матричной декомпозиции и коллективной фильтрации.Не существует один SequenceFile формат.

Скорее всего, ключ или значение будет Mahout Vector.То, что умеет писать Vector, это VectorWritable.Это класс, который вы бы использовали, чтобы обернуть Vector и написать его с SequenceFile.Writer.

. Вам нужно будет посмотреть на задание, которое будет его использовать, чтобы убедиться, что вы проходите то, что ожидаете.Например, для кластеризации я думаю ключ игнорируется, а значение равно Vector.

...