Как эффективно сортировать (упорядочивать) большие данные с помощью Hive?

Я хочу эффективно отсортировать большой набор данных (т.е. с помощью специального разделителя, как описано здесь: Как работает алгоритм сортировки MapReduce?), но я хочу сделать это с помощью hive.

Однако в руководстве по Hive указано, что «заказ по» выполняется одним редуктором. Это меня удивляет, поскольку в pig действительно реализовано нечто похожее на статью - pig impl

Мне что-то не хватает, или улей просто не подходит для этой работы?


person ihadanny    schedule 12.07.2011    source источник


Ответы (3)


Я считаю, что Hive не подходит для этой работы. По крайней мере на данный момент. Он создан для использования в качестве инструмента OLAP / Report и не оптимизирован для создания больших наборов данных результатов, поскольку большинство аналитических запросов дают относительно небольшой набор результатов. Как результат - у них хорошие возможности по ТОП N, но плохой общий порядок.

На всякий случай, если вы не сталкивались с этим раньше - предлагаю взглянуть на пример terasort Hadoop, который специально предназначен для сортировки больших наборов данных наилучшим образом с помощью MR. http://hadoop.apache.org/common/docs/r0.20.1/api/org/apache/hadoop/examples/terasort/package-summary.html

person David Gruzman    schedule 16.07.2011
comment
Hive можно использовать для создания больших файлов HDFS или локальных файлов на основе запросов. Но проблема здесь в заказе. Hive может выполнять ORDER BY только при использовании одного редуктора. Это действительно было бы совершенно неэффективно. - person Olaf; 18.07.2011

Невозможно использовать несколько редукторов для полного упорядочивания в Hive. Он еще не реализован - https://issues.apache.org/jira/browse/HIVE-1402.

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

person Thejas Nair    schedule 29.05.2012

Hive генерирует задания MapReduce для выполнения запросов. В вашем конкретном случае фактическая сортировка выполняется фреймворком Hadoop MapReduce до того, как данные будут переданы в редуктор.

person Olaf    schedule 12.07.2011