Как эффективно сортировать (упорядочивать) большие данные с помощью улья? - PullRequest
3 голосов
/ 12 июля 2011

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

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

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

Ответы [ 3 ]

3 голосов
/ 16 июля 2011

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

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

1 голос
/ 29 мая 2012

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

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

0 голосов
/ 12 июля 2011

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

...