2016-09-02 9 views
0

Как вы эффективно разрабатываете таблицу Hive/Impala с учетом следующих фактов?Перегородка Hadoop. Как вы эффективно разрабатываете таблицу Hive/Impala?

  1. Таблица получает данные инструмента около 100 миллионов строк каждый день. Дата, в которую он получает данные, хранится в столбце таблицы вместе с ее идентификатором инструмента.
  2. Каждый инструмент получает около 500 прогонов в день, который идентифицируется идентификатором пробега столбца. Каждый идентификатор запуска содержит данные размером примерно 1 мб.
  3. Размер по умолчанию блока - 64 МБ.
  4. Таблицу можно найти по дате, идентификатору инструмента и идентификатору запуска в этом порядке.
+1

Что вы считали до сих пор? – dg99

+0

[Добро пожаловать в SO!] (Http://stackoverflow.com/help/how-to-ask), пожалуйста, обновите свои выводы, иначе вопрос станет слишком широким! –

ответ

0

Если вы делаете аналитику по этим данным, то твердый выбор с Impala использует формат Паркета. То, что хорошо зарекомендовало себя для наших пользователей, заключается в разделении даты на год, месяц, день на основе значения даты в записи.

Так, например CREATE TABLE Foo (tool_id INT, eff_dt метки времени) раздел (год ИНТ месяц ИНТ день ИНТ) хранится в виде паркета

При загрузке данных в эту таблицу мы используем что-то вроде этого, чтобы создать динамический перегородки:

INSERT INTO foo partition (year, month, day) 
SELECT tool_id, eff_dt, year(eff_dt), month(eff_dt), day(eff_dt) 
FROM source_table; 

Затем обучить пользователей, что, если они хотят лучшей производительности, чтобы добавить год, месяц, день их статьи WHERE так, что она попадает в раздел для лучшей производительности. Затем добавьте их eff_dt в оператор SELECT, чтобы они имели значение даты в формате, который им нравится видеть в их окончательных результатах.

В CDH Parquet хранит данные по умолчанию в блоках объемом 256 МБ (что настраивается). Вот как его настроить: http://www.cloudera.com/documentation/enterprise/latest/topics/impala_parquet_file_size.html