Есть общее место для хранения схем данных в Hadoop?

в последнее время я занимаюсь некоторыми исследованиями, используя Hadoop, Hive и Pig для преобразования данных. В рамках этого я заметил, что схема файлов данных, похоже, вообще не привязана к файлам. Файлы данных - это просто плоские файлы (если не использовать что-то вроде SequenceFile). Каждое приложение, которое хочет работать с этими файлами имеет свой собственный способ, представляющий схемы этих файлов.

например, я загружаю файл в HDFS и хочу преобразовать это со свиньей. Чтобы эффективно работать с ним, мне нужно указать схему файла при загрузке данных:

EMP = LOAD 'myfile' using PigStorage() as { first_name: string, last_name: string, deptno: int};

теперь, я знаю, что когда хранение файл, использующий PigStorage, схема может быть необязательно записана вдоль нее, но для того, чтобы получить файл в Pig, в первую очередь, кажется, что вам нужно указать схему.

3 ответов


похоже, что вы ищете Apache Avro. С Avro ваша схема встроена в ваши данные, поэтому вы можете прочитать ее, не беспокоясь о проблемах схемы, и это делает эволюцию схемы очень простой.

самое замечательное в Avro заключается в том, что он полностью интегрирован в Hadoop, и вы можете использовать его с большим количеством подпроектов Hadoop, таких как Pig и Hive.

например, с свиньей вы могли бы сделать:

EMP = LOAD 'myfile.avro' using AvroStorage();

Я бы посоветовал посмотреть документация для AvroStorage для более подробной информации.

вы также можете работать с Avro с Hive, как описано здесь но я не использовал это лично, но он должен работать таким же образом.


Что нужно HCatalog что это

"Apache HCatalog-это служба управления таблицей и хранилищем данных создано с использованием Apache Hadoop.

Это включает в себя:

  • предоставление общей схемы и механизма типа данных.
  • предоставление абстракции таблицы, чтобы пользователям не нужно было беспокоиться о том, где и как их данные хранятся.
  • обеспечение взаимодействия между данными инструменты обработки, такие как Pig, Map Reduce и Hive."

вы можете взглянуть на "пример потока данных" в docs чтобы увидеть именно тот сценарий, о котором вы говорите


Apache Zebra Кажется инструментом, который может обеспечить общее определение схемы через mr, pig и hive. Имеет собственное хранилище схем. MR job может использовать встроенный TableStore для записи в HDFS.