В каком формате и как мне импортировать строки JSON, такие как данные, в hadoop?

Я много читал о форматах данных для hadoop и в настоящее время, похоже, понимаю, что в зависимости от используемого вами пакета наиболее продвинутые форматы - ORC (хорошо поддерживается в Hortonworks) или Parquet (хорошо поддерживается в Cloudera).

Сейчас большинство примеров / учебных пособий для начинающих включают простые данные CSV. Одна запись на строку. Часто они импортируют CSV в SQL-подобную структуру (Hive), не сохраняя его как ORC.

JSON также поддерживается Hadoop, но не так хорошо интегрирован. Также, согласно обзорной статье, JSON - плохой формат, потому что его нельзя разбить на куски по строкам. Строки JSON не поддерживаются изначально.

Мои данные - это метаданные фильма, выглядящие так:

{title: "Movie 1", rating: 4.3, tags: ["Romance", "Music"],
    actors: ["Leonardo di Caprio"], source: "example.com"}
{title: "Movie 2", cinema_viewers: 10000000, budget: 10000000,
    categories: ["Action"], role_importance: {'Adam Sandler': 2},
    source: "example.net"}

Как мне импортировать мои данные, если у меня есть структура строк JSON? Это сильно зависит от механизма запросов, который я хочу использовать? До сих пор я узнал только о улье и свинье. Кажется, что оба могут быть использованы со схемой HCatalog или без. Но я использовал только эти данные для простых данных столбцов без списков (что в SQL потребовало бы некоторых таблиц внешнего ключа).

Также было бы возможно разделить данные на несколько разных файлов перед импортом - эмулируя отношение внешнего ключа, как в SQL. Или мы всегда храним тесно связанные данные в одном файле, если это возможно?

Моя умственная проблема, кажется, состоит в том, что я не понимаю всей трансформации по пути: формат, в котором я должен хранить данные в файлах, которые затем могут быть импортированы с использованием табличной абстракции, сохраненной как другой файл (OCR), который будет затем запросить языки из другого домена (SQL, например Hive или Pig), который может быть переведен в MapReduce или какой-либо другой промежуточный уровень (Spark).

Отказ от ответственности: я использовал Hadoop в качестве имени для всей среды интеллектуального анализа данных, включая все API запросов, такие как Hive и Pig, а не только для системы распространения файлов.

1 ответ

Я новичок в этом мире Hadoop/Hive, поэтому не могу ответить на все ваши вопросы, но я смог преобразовать json для формата строки в формат ORC, следуя этому примеру.

Я надеюсь, что это помогает.

Другие вопросы по тегам