Подтвердить что ты не робот

Авро против Паркет

Я планирую использовать один из файлов формата hadoop для моего проекта, связанного с hadoop. Я понимаю паркет эффективен для запросов на основе столбцов и avro для полного сканирования или когда нам нужны все данные столбцов!

Прежде чем продолжить и выберите один из форматов файлов, я хочу понять, каковы недостатки/недостатки одного из них. Может ли кто-нибудь объяснить это мне простыми словами?

4b9b3361

Ответ 1

Если вы еще не решили, я бы пошел и написал схемы Avro для ваших данных. После этого выбор между файлами контейнеров Avro и файлами Parquet примерно так же просто, как замена, например,

job.setOutputFormatClass(AvroKeyOutputFormat.class);
AvroJob.setOutputKeySchema(MyAvroType.getClassSchema());

для

job.setOutputFormatClass(AvroParquetOutputFormat.class);
AvroParquetOutputFormat.setSchema(job, MyAvroType.getClassSchema());

Формат Parquet, по-видимому, является более интенсивным с точки зрения вычислительной мощности на стороне записи - например, требуется RAM для буферизации и CPU для заказа данных и т.д., но это должно сократить затраты на ввод-вывод, хранение и передачу, а также делают для эффективного чтения особенно с SQL-подобными запросами (например, Hive или SparkSQL), которые адресуют только часть столбцов.

В одном проекте я закончил возврат из Parquet в контейнеры Avro, потому что схема была слишком обширной и вложенной (была получена из некоторых довольно иерархических объектно-ориентированных классов) и привела к 1000 столбцам Паркета. В свою очередь, наши группы строк были действительно широкими и неглубокими, что означало, что это потребовалось навсегда, прежде чем мы могли обработать небольшое количество строк в последнем столбце каждой группы.

У меня не было большого шанса использовать Parquet для получения более нормализованных/нормальных данных, но я понимаю, что если использовать его хорошо, это позволяет значительно повысить производительность.

Ответ 2

Avro - это формат на основе строк. Если вы хотите получить данные в целом, вы можете использовать Avro

Паркет - это формат на основе столбцов. Если ваши данные состоят из множества столбцов, но вас интересует поднабор столбцов, вы можете использовать Parquet

HBase полезен, когда вы часто проводите обновление данных. Avro работает быстро, паркет намного быстрее.

Ответ 3

Авро

  • Широко используется как платформа для сериализации
  • На основе строк, предлагает компактный и быстрый двоичный формат
  • Схема закодирована в файле, поэтому данные могут быть немаркированы
  • Файлы поддерживают сжатие блока и разделяются.
  • Поддержка эволюции схемы

Паркет

  • Формат двоичных файлов, ориентированный на столбцы
  • Использует алгоритм измельчения записи и сборки, описанный в документе Dremel
  • Каждый файл данных содержит значения для набора строк
  • Эффективно с точки зрения ввода/вывода на диске, когда нужно запрашивать конкретные столбцы

Из Выбор формата хранения данных HDFS - Avro vs. Parquet и многое другое

Ответ 4

Как Avro, так и Parquet представляют собой "самоописываемые" форматы хранения, что означает, что они одновременно внедряют данные, информацию метаданных и схему при хранении данных в файле. Использование любого формата хранения зависит от варианта использования. Три аспекта составляют основу, на которой вы можете выбрать, какой формат будет оптимальным в вашем случае:

  1. Операция чтения/записи: Parquet - это формат файла на основе столбцов. Поддерживает индексацию. В связи с этим он подходит для запросов с однократной записью и интенсивного чтения, сложных или аналитических запросов с низкими задержками. Это обычно используется конечными пользователями/учеными данных.
    Между тем Avro, являющийся форматом файлов на основе строк, лучше всего использовать для операций с интенсивной записью. Это обычно используется инженерами данных. Оба поддерживают форматы сериализации и сжатия, хотя они делают это по-разному.

  2. Инструменты: Паркет хорошо подходит для Импалы. (Impala - это механизм SQL-запросов RDBM с массовой параллельной обработкой (MPP), который знает, как работать с данными, находящимися в одном или нескольких внешних механизмах хранения.) Опять же, Parquet хорошо поддается сложным/интерактивным запросам и быстро (с малой задержкой). ) выводит данные в HDFS. Это поддерживается CDH (Cloudera Distribution Hadoop). Hadoop поддерживает форматы Apache Optimized Row Columnar (ORC) (выбор зависит от распределения Hadoop), тогда как Avro лучше всего подходит для обработки Spark.

  3. Эволюция схемы. Развитие схемы БД означает изменение структуры БД, следовательно, ее данных и, следовательно, обработку запросов.
    И Паркет, и Авро поддерживают эволюцию схемы, но в разной степени.
    Паркет хорош для операций "добавления", например, для добавления столбцов, но не для переименования столбцов, если "чтение" не выполняется по индексу.
    Avro лучше подходит для добавления, удаления и изменения столбцов, чем Parquet. Исторически Avro предоставлял более богатый набор возможностей для эволюции схем, чем Parquet, и, хотя их возможности для эволюции схем имеют тенденцию размываться, Avro по-прежнему сияет в этой области по сравнению с Parquet.

Ответ 5

Ваше понимание верно. Фактически, мы столкнулись с похожей ситуацией во время миграции данных в нашем DWH. Мы выбрали Parquet вместо Avro, так как экономия диска была почти вдвое выше, чем у AVro. Кроме того, время обработки запросов было намного лучше, чем Avro. Но да, наши запросы были основаны на агрегации, операциях на основе столбцов и т.д., Следовательно, Паркет, как и ожидалось, был явным победителем.

Мы используем Hive 0.12 из дистрибутива CDH. Вы упомянули, что у вас проблемы с Hive + Parquet, что это? Мы не сталкивались ни с кем.

Ответ 6

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

Существует множество форматов файлов, которые можно использовать в Hive. Примечательными упоминаниями являются AVRO, Parquet. RCFile и ORC. В Интернете есть несколько хороших документов, на которые вы можете ссылаться, если вы хотите сравнить производительность и использование пространства этих форматов файлов. Следуйте за некоторыми полезными ссылками, которые помогут вам двигаться.

Это сообщение в блоге

Эта ссылка из MapR [Они не обсуждают Паркет хотя]

Эта ссылка из Inquidia

Вышеупомянутые ссылки помогут вам. Надеюсь, это ответ на ваш запрос.

Спасибо!

Ответ 7

Просто для описания на Парке вы можете обратиться сюда: http://bigdata.devcodenote.com/2015/04/parquet-file-format.html

Я собираюсь писать очень скоро на Avro и сравнение между ними. Отправьте его здесь после завершения.