2013-08-06 6 views
1

Мы начали с кучи данных, хранящихся в файлах NetCDF. Оттуда был написан код Java для создания файлов последовательности из файлов NetCDF. Мы мало знаем о первоначальных намерениях кода, но нам удалось немного узнать о самих файлах последовательности. В конечном счете, мы пытаемся создать таблицы внутри Hive, используя эти файлы последовательности, но пока что неспособны сделать это на данный момент.Последовательный файл объектов в улье

Мы знаем, что ключи и значения в файлах последовательности хранятся как объекты, которые реализуют WritableComparable. Мы также можем создавать Java-код для итерации по всем данным в файлах последовательности.

Итак, что было бы необходимо, чтобы на самом деле заставить Hive правильно прочитать данные в объектах этих файлов последовательности?

Спасибо!

ОБНОВЛЕНИЕ: Причина, по которой так сложно описать, где у меня возникают проблемы, состоит в том, что я не обязательно получаю какие-либо ошибки. Hive просто просто читает файлы последовательности неправильно. При работе в Hadoop -Text команды на мой файл последовательности я получаю список объектов, как, например:

NetCDFCompositeKey @ 263c7e3f, NetCDFRecordWritable @ 4d846db5

Данные внутри самих этих объектов. Итак, в настоящее время с помощью @Tariq я считаю, что мне нужно сделать, чтобы действительно прочитать эти объекты, чтобы создать пользовательский InputFormat для чтения ключей и настраиваемого SerDe для сериализации и десериализации объектов?

+1

Вы знаете, что Hive игнорирует ключи в файлах последовательностей и интерпретирует значения как строки таблицы, правильно? – Olaf

+0

+1 для указания на то, что вне @Olaf. Что-то нужно иметь в виду при работе с SequenceFiles через Hive. – Tariq

+0

Да, я слышал это. И я видел, что я мог бы использовать пользовательский InputFormat в качестве пользователя, упомянутого ниже. Я не совсем уверен, как это сделать. Я все еще учусь. –

ответ

1

Прошу прощения, я не могу понять из вашего вопроса, где именно вы столкнулись с проблемой. Если вы хотите использовать SequenceFiles через Hive, вам просто нужно добавить предложение STORED AS SEQUENCEFILE при выпуске CREATE TABLE (скорее всего, вы уже знаете это, ничего нового). Когда вы работаете в SequenceFiles, Hive обрабатывает каждую пару ключей/значений SequenceFiles, аналогичную строкам в обычных файлах. Важно отметить, что ключи будут игнорироваться. Кроме того, ничего особенного.

Сказав, что если вы хотите прочитать как ключи, так и значения, вам может потребоваться написать пользовательский InputFormat, который может читать как ключи, так и значения. См. Это project, например. Это позволяет нам получать доступ к данным, хранящимся в ключе SequenceFile.

Кроме того, если ваши ключи и значения являются пользовательскими классами, вам потребуется написать SerDe, а также сериализовать и десериализовать данные.

HTH

P.S. : Я не знаю, это именно то, что вы искали. Дайте мне знать, если это не так, и добавьте еще несколько деталей к вашему вопросу. Я попробую обратиться к этому.

+0

Итак, похоже, что Hive фактически выводит классы. Аналогично этому: NetCDFRecordWritable @ 4d846db5 Итак, да, я считаю, что вы действительно ответили на это! Я считаю, что я все больше понимаю это сейчас. Итак, я бы создал пользовательский InputFormat и пользовательский SerDe! InputFormat будет считывать данные с моих ключей, и SerDe будет действительно читать сами объекты? –

+0

Итак, похоже, я сейчас смущен двумя вещами. Сериализация SerDe связана с сериализацией Hadoop? Или SerDe - сериализация/десериализация только для Hive? Наконец, я должен научиться создавать пользовательские версии! Любые хорошие источники? –

 Смежные вопросы

  • Нет связанных вопросов^_^